Point-of-interest latency prediction using mobile device location history

ABSTRACT

A latency analysis system determines a latency period, such as a wait time, at a user destination. To determine the latency period, the latency analysis system receives location history from multiple user devices. With the location histories, the latency analysis system identifies points-of-interest that users have visited and determines the amount of time the user devices were at a point-of-interest. For example, the latency analysis system determines when a user device entered and exited a point-of-interest. Based on the elapsed time between entry and exit, the latency analysis system determines how long the user device was inside the point-of-interest. By averaging elapsed times for multiple user devices, the latency analysis system determines a latency period for the point-of-interest. The latency analysis system then uses the latency period to provide latency-based recommendations to a user. For example, the latency analysis system may determine a shopping route for a user.

CROSS-REFERENCE TO RELATED APPLICATIONS

This patent application claims priority to U.S. Provisional PatentApplication No. 61/847,431, filed Jul. 17, 2013, and entitled“Point-of-Interest Latency Prediction Using Mobile Device LocationHistory.” The entire disclosure of the above-identified priorityapplication is hereby fully incorporated herein by reference.

TECHNICAL FIELD

The present disclosure relates generally to determining a latency periodat a user destination, and more particularly to methods and systems thatrely on user-location history, such as fine-grained user location data,to determine the latency period at a destination of a user. The presentdisclosure also relates to using latency period data in a variety ofapplications, including generation of a shopping route for a user.

BACKGROUND

When users plan a trip to a destination, such as to a grocery store, aretailer, a restaurant, or other point-of-interest, users often desireto know how long the trip to the destination will take. For example, auser searches for a particular restaurant or retail chain in a mappingapplication on a user device, such as a mobile phone. Based on thesearch criteria, the mapping application may return a travel distanceand expected time to various locations of the restaurant or retailerchain. The mapping application may also highlight the chain locationthat is the closest to the user device. The mapping application may alsoprovide recommended routes for the user to take to the closest chainlocation.

While knowing the travel time and distance to a location is oftenhelpful to a user, the user is left without knowing how busy the nearestlocation is or whether other, nearby locations are less busy. Forexample, the user does not know whether visiting a chain location thatis slightly further away—but less busy or less crowded—may take lesstime overall than visiting the chain location that is nearby. Thus,based on travel time to the destination alone, the user may spend moretime traveling to and visiting the nearest location than the user wouldif traveling to and visiting a location that is further away. And insome instances, a user may not care how long it takes to get to apoint-of-interest. Rather, the user may desire only to know how long thewait is at a particular point-of-interest or how long it will take theuser to pass through the point-of-interest, such as through a checkoutline at a retailer. In addition to knowing how long a trip will take, incertain instances a user may wish to know the fastest route or alternateroutes. For example, a user with a specific shopping list may desire thebest route (or alternate routes) for obtaining the products on theshopping list.

SUMMARY

In certain example aspects described herein, a computer-implementedmethod for latency determination for points-of-interest is provided. Alatency analysis system receives a location history for multiple usercomputing devices. The location history comprises informationidentifying the locations for each of the user computing devices. Thelocation history also comprises a time corresponding to when each of theuser computing devices was at each location. Based on a match of thelocation for at least a portion of the user computing devices, thelatency analysis system identifies a location of a point-of-interestfrom the location history received from the user computing devices.

For each of the of the user computing devices having a locationcorresponding to the location of the point-of-interest, the latencyanalysis system then determines a first time and a second time for theuser computing device. The first time is associated with the usercomputing device arriving at the location of the point-of-interest andthe second time is associated with the user computing device leaving thelocation of the point-of-interest. The latency analysis system then, foreach of the user computing devices having a location corresponding tothe location of the point-of-interest, compares the determined firsttime to the determined second time to determine a latency interval atthe point-of-interest for each of the user computing devices having alocation corresponding to the location of the point-of-interest. Thelatency analysis system then determines a latency period for thepoint-of-interest, the latency period being a function of eachdetermined latency interval for the point-of-interest.

In certain example aspects, the latency analysis system also receives arequest from a particular user computing device, the request relating tothe determined latency period for the point-of-interest. In response toreceiving the request from the particular user computing device, thelatency analysis system communicates a response to the particular usercomputing device. The response comprises information derived from thedetermined latency period for the point-of-interest.

In certain other example aspects, a system for latency determination forpoints-of-interest is provided. Also provided in certain aspects is acomputer program product to for latency determination for points ofinterest.

In certain example aspects described herein, a computer-implementedmethod for generating a shopping route, based on latency periodinformation, is provided. The latency analysis system receives ashopping list for products from a user computing device. The latencyanalysis system then determines a location of the user computing devicerelative to merchants that offer the products for sale. The latencyanalysis system then determines a latency period associated with each ofthe merchants, the latency period corresponding to the amount of time toobtain one or more of the products on the shopping list from themerchant location.

In response to determining the latency period for each of the determinedmerchant locations, the latency analysis system determines a shoppingroute for the user to obtain the products on the shopping list. Incertain aspects, the shopping route identifies at least a portion of themerchants offering the products for sale and results in a shortenedtotal time period for the user to obtain the products on the shoppinglist from the merchants offering the products for sale. In certainexample embodiments, the total time period includes travel time amongthe merchant locations that the user must visit to obtain the productson the shopping list.

In certain other example aspects, a system for generating a shoppingroute is provided. Also provided in certain aspects is a computerprogram product to for generating a shopping route.

These and other aspects, objects, features and advantages of the exampleembodiments will become apparent to those having ordinary skill in theart upon consideration of the following detailed description ofillustrated example embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram depicting a system for determining a latencyperiod for points-of-interest, in accordance with certain exampleembodiments.

FIG. 2 is a block flow diagram depicting a method for determining alatency period response for a user, in accordance with certain exampleembodiments.

FIG. 3 is a block flow diagram depicting a method for determining alatency period for a specific point-of-interest, in accordance withcertain example embodiments.

FIG. 4 is an illustration depicting a user interface for communicating atotal experience time to a user for a plurality of points-of-interest,in accordance with certain example embodiments.

FIG. 5 is a block flow diagram depicting a method for generating ashopping route of a user, in accordance with certain exampleembodiments.

FIGS. 6A through 6D are an illustration depicting a user interface forproviding a shopping route to a user, in accordance with certain exampleembodiments.

FIG. 7 is a block diagram depicting a computing machine and a module, inaccordance with certain example embodiments.

DETAILED DESCRIPTION OF THE EXAMPLE EMBODIMENTS

Overview

As disclosed herein, a latency analysis system determines a latencyperiod, such as a current wait time, at a destination of a user. Todetermine the latency period, the latency analysis system receiveslocation history from multiple user devices. Based on the locationhistories, the latency analysis system identifies points-of-interestthat users have visited and determines the amount of time the userdevices were at a point-of-interest. For example, the latency analysissystem reads the location history to determine when a user deviceentered and exited a point-of-interest. Based on the amount of elapsedtime between the entry and exit, the latency analysis system determineshow long the user device was inside the point-of-interest. By averagingelapsed times for multiple user devices, for example, the latencyanalysis system determines a latency period for the specificpoint-of-interest. The latency analysis system then uses the latencyperiod to provide specific recommendations to a user. For example, thelatency analysis system may inform a user of checkout times for nearbygrocery stores, or it may provide the user an estimated wait time at aspecific restaurant.

More particularly, in some embodiments, users register with a latencyanalysis system. For example, a particular user may provide the user'sname and other information so that the latency analysis system cancreate an account (or record) for the user. As part of the registrationand to obtain the benefits of the methods and techniques describedherein, the user may have to select a setting on the user computingdevice—or install an application on the user device—that allows thelatency analysis system to receive location history from the userdevice. The user may install, for example, a latency analysisapplication on the user device, which permits the latency analysissystem to receive location history from the user device. For example,the latency analysis system may obtain authorization from the user toreceive location history from the user's computing device, such as amobile phone of the user. In certain examples, a user may associate afinancial account with the record of the user, such as a digital walletaccount that the user can employ when purchasing a product.

Based on user authorizations to receive location history, the latencyanalysis system receives location history for multiple users. That is,multiple user devices communicate location history data to the latencyanalysis system, and the latency analysis system receives the locationhistory. The location history includes, for example, informationidentifying past and present locations of the user device, as well asthe date and time the user device was at a location. In certainexamples, the location history includes fine-grained location historyinformation. In other words, the location history may be highly accurateand hence able to identify the location of the user device to within afew feet or even a few inches. For example, the fine-grained locationhistory may place the user device in a checkout line at a grocery store,at the entrance area of a restaurant, or in a line at an amusement park.The information received by the latency analysis system can be strippedof any user identifying information such that the latency analysissystem receives only data showing that a device (without knowing whichdevice) is at a particular location at a particular time.

After receiving the location history for multiple user devices, thelatency analysis system identifies individual points-of-interest fromthe location history data. That is, for one or more of the user devices,when the latency analysis system receives location history from the userdevice, the latency analysis system identifies—from the location historyfor the user device—points-of-interest that correspond to the locationof the user device. For example, several users carrying mobiletelephones may visit a specific restaurant or grocery store. After thelatency analysis system receives the location history for the users'mobile telephones, the latency analysis system identifies the specificrestaurant or grocery store that the users are visiting (or havevisited). The points-of-interest identified from the location historymay include any geographical destinations that might be of interest to abroad range of different users, such as a restaurant, grocery store,merchant, museum, park, entertainment location, or other destinations ofthe user.

Based on the received location history and the identifiedpoints-of-interest, the latency analysis system determines a latencyperiod for one or more of the specific points-of-interest. For aparticular user device, the latency analysis system determines from thelocation history a start time (or first time), which corresponds to thetime from which the latency analysis system determines how long the usercarrying the device was at the point-of-interest. The latency analysissystem also determines an end time (or second time) from the locationhistory, which may correspond to the time that the latency analysissystem determines that the user carrying the device has left (or is nolonger waiting) at the point-of-interest, for example.

By comparing the start time to the end time for the particular userdevice, the latency analysis system determines a latency interval forthe point-of-interest. In other words, the time that has elapsed fromthe start time to the end time corresponds to the latency interval atthe specific point-of-interest for the particular user device. Thelatency analysis system then determines a latency period for apoint-of-interest by aggregating multiple latency intervals that ariseover a defined period of time, such as by averaging multiple latencyintervals.

For example, the latency analysis system may receive a location historyfrom a user device (e.g., a user with a particular relevant applicationinstalled or a particular setting set) placing the user device in agrocery store checkout line at a certain start time. When the user (andhence the user device) leaves the checkout line, the latency analysissystem then determines the end time for the checkout process. Bycomparing the start time (first time) with the end time (second time),the latency analysis system determines a latency interval at the grocerystore checkout line for the particular user device. The latency intervalthus corresponds to the amount of time it took the particular user—andmore precisely the user's device—to move through the checkout line.Then, by aggregating latency intervals for multiple user devices incheckout lines at the grocery store at a defined time, the latencyanalysis system determines a latency period for the checkout time at thegrocery store. For example, the latency analysis system may determinethat users arriving in the checkout line between 5:00 p.m. to 6:00 p.m.on a Sunday (that is, users arriving in a defined time window) canexpect to spend to about 15 minutes in a checkout line. In other words,the latency period for 5:00 p.m. to 6:00 p.m. on a Sunday would be 15minutes.

In situations in which the systems disclosed herein receive personalinformation about users, or may make use of personal information, theusers may be provided with an opportunity to control whether programs orfeatures of the system receive the user information (for example,information about a user's current location). Additionally, certain datamay be treated in one or more ways before it is stored or used, so thatpersonally identifiable information is removed. For example, a user'sgeographic location may be generalized where location information isobtained (such as to a city, ZIP code, or state level), so that aparticular location of a particular user cannot be determined. Thus, theuser may have control over how information is collected about the userand used by a system as described herein.

In another example, the latency analysis system receives locationhistory placing multiple user devices at a specific restaurant. Bydetermining how long the user devices remain at the restaurant, thelatency analysis system can determine a latency period for therestaurant over a defined period time. For example, from the locationhistory of a particular user device, the latency analysis systemdetermines when the device arrived at the restaurant (a start time) andthen when the device left the restaurant (an end time). By determiningthe elapsed time that the user device was at the restaurant—that is, theamount of time that passed from the device arriving at the restaurant toleaving the restaurant—the latency analysis system can determine alatency interval at the restaurant for the particular user device. Afteraggregating the latency interval with determined latency intervals ofother devices at the restaurant over a defined time, such as byaveraging multiple latency intervals, the latency analysis system candetermine a latency period for the restaurant for a defined time. Forexample, the latency analysis system may determine that users spend onaverage 3.0 hours at the restaurant if they arrive between 6:00 p.m. and7:00 p.m. on a Friday.

In certain examples, the latency analysis system determines a current or“real time” latency period for a specific point-of-interest, such as thecurrent wait time at a particular restaurant. For example, usinglocation histories with fine-grained location data, the latency analysissystem may determine user devices are currently spending about 20minutes waiting in an area of the restaurant before proceeding to atable. After averaging the latency intervals for multiple user devicesat the restaurant, for example, the latency analysis system determines alatency period of 20 minutes for the restaurant, which corresponds tothe current wait time at the restaurant. The latency analysis system maylikewise determine that, for a specific grocery store, the currentlatency period for moving through a checkout line is 10 minutes.

After determining a latency period for a specific point-of-interest, thelatency analysis system may then use the determined latency-period datato make latency-period comparisons among different points-of-interest orfor the same point-of-interest. For example, the latency period at onegrocery store may be 20 minutes at 5:00 p.m. on a Sunday, whereas thelatency period for a nearby, second grocery store at the same time is 5minutes. The latency analysis system can thus determine that the latencyperiod for the second grocery store is 15 minutes less than the othergrocery store by comparing the latency periods. In another example, thelatency analysis system may likewise determine that one restaurant has alatency period that is 30 minutes longer than the latency period at asecond, nearby restaurant. Hence, the latency analysis system determinesthat the second restaurant has a shorter wait time.

When the latency analysis system makes comparisons for the samepoint-of-interest, the latency analysis system can use historical,latency-period data for a specific point-of-interest to determine whencertain activities at the point-of-interest occur faster or slower. Thelatency analysis system may determine, for example, a latency period of3.0 hours for user devices arriving at a restaurant between 6:00 p.m.and 7:00 p.m. on a Friday, whereas the latency period for user devicesarriving between 8:00 p.m. and 9:00 p.m. is 1.5 hours on the sameFriday. Hence, the latency analysis system determines that the wait timefor the restaurant is less for user devices arriving at 8:00 p.m. onFriday. In another example, the latency analysis system may determine,based on the latency-period data, at what times of day the checkoutlines at a specific grocery store arc the slowest or fastest. Thelatency analysis system may make a variety of different latency-periodcomparisons, either for a specific point-of-interest or among different(multiple) points-of-interest.

In certain examples, after accumulating latency-period data, the latencyanalysis system may rely on historical latency data when making alatency period determination. For example, when making a real-time,latency-period determination, the latency analysis system may determinethat a large number of users are at a particular point-of-interest, suchas a restaurant, compared to the usual number of users at therestaurant. Thus, the latency analysis system may determine that thelatency period is longer than usual, regardless of how long users (andtheir user devices) take to enter the restaurant and leave therestaurant. Similarly, the latency analysis system may determine thatsignificantly more users than usual are in the vicinity of a specificpoint-of-interest. For example, a large number of users as compared tothe usual number of users may be gathered at a theater that is adjacentto a specific restaurant. Thus, the latency analysis system maydetermine that the latency period is longer than usual—based on thenumber of users in the vicinity—regardless of how long users (and theiruser devices) take to enter the restaurant and leave the restaurant thatis adjacent to the restaurant. In other examples, the latency analysissystem may determine that far fewer than usual users are at or near alocation.

In certain examples, the latency analysis system may, based on thepopulation of users at or near the point-of-interest, adjust or modifythe latency period for the point-of-interest. That is, the latencyanalysis system may adjust or modify the latency period beyond the timedetermined for user devices entering and exiting a point-of-interest.For example, if the determined latency period is 2 hours at a specificrestaurant, the latency analysis system may add an additional hour tothe latency period to account for the additional users that are at anadjacent theater that arc likely to go to the restaurant.

In another example, if more users than usual—based on historical,latency-period data—are at (or arrive at) a specific grocery store, thelatency analysis system may add additional time to the determinedlatency period beyond that determined for user devices entering andexiting the checkout line. Alternatively, if a user population is muchlower than usual at a specific point-of-interest, the latency analysissystem in certain examples may decrease the determined latency period bya determined amount. The latency analysis system may thus account forvarious factors, such as user population, at or near a particularpoint-of-interest. Similarly, if significantly fewer users than usualare at a point-of-interest—but typical numbers of users are outside oraround the point-of-interest—the latency analysis system may determinethat the point-of-interest is closed or not open to the public. Incertain examples, such as if a natural disaster affects a region, thelatency analysis system may determine that several points-of-interest inthe region are suddenly and/or unexpectedly closed. The latency analysissystem may also determine, for example, that several user devices havesuddenly and/or unexpectedly left a region, thus indicating a possiblenatural disaster or other event in the area. The latency analysis systemcan thus provide an alert to one or more users regarding the regionand/or the event. Additionally or alternatively, based on such data, thelatency analysis system can avoid sending a user to a closedpoint-of-interest or a region where users are fleeing, for example.

Based on the ability of the latency analysis system to determine latencyperiods for various points-of-interest, the latency analysis systemreceives and processes requests for users that involve latency perioddeterminations. For example, a user planning a trip to a grocery storemay search for nearby grocery stores, such as on a mapping application.Additionally or alternatively, the user may search for grocery storesthat currently have the fastest checkout times. In another example, auser desiring to eat at a specific restaurant may search for therestaurant on the user device. Additionally or alternatively, the usermay search for restaurants generally, such as for restaurants that arenearby. A user may also specifically request the wait time at thespecific restaurant, for example. In another example, a user may ask thelatency analysis system for the best time to go to a point-of-interestto avoid a wait. For example, the user may ask the latency analysissystem what is the best time to go to a specific grocery store or to aparticular ride at an amusement park. The latency analysis system thenreceives and processes the user's request.

To process the user's request, the latency analysis system reads thecontent of the request to determine if providing latency-periodinformation is applicable to the request. For example, the latencyanalysis system may determine that the request involves one or morepoints-of-interest where providing latency-period information may beuseful, such as a request for nearby grocery stores or restaurants. Thelatency analysis system then determines the latency-period informationthat is responsive to the request. For example, if the latency analysissystem receives a request for nearby grocery stores with the fastestcheckout times, the latency analysis system identifies thelatency-period data for grocery stores that are near the user device. Ifthe search involves a request specific restaurant, such as the times ofday with shorter wait times, the latency analysis system identifies thelatency-period data for the specific restaurant.

In certain embodiments, such as when the request involves a real-timelatency period determination, the latency analysis system may perform anadditional latency-period determination in response to receiving andreading the user request. For example, if the latency analysis systemreceives a request for a current wait time at a specific restaurant, thelatency analysis system may perform an additional latency-perioddetermination in response to receiving and reading such a request. Inother embodiments, such as when the latency analysis system does nothave any historical location data for a specific point-of-interest, thelatency analysis system may determine the latency period for thepoint-of-interest as described herein in response to receiving andreading the user's request. For example, the latency analysis system maydetermine that users entering a restaurant are quickly being seated.Hence, the latency analysis system may determine a current latencyperiod of 1 minute for the restaurant.

After the latency analysis system determines information that isresponsive to a user request, the latency analysis system communicates aresponse to the user that incorporates a latency period determination.For example, if a user requests the wait time at a specific restaurant,the latency analysis system will provide the expected wait time for therestaurant to the user in a response to the user's request. If a usermakes a request that involves comparing different points-of-interest,for example, the latency analysis system will provide the comparativeinformation to the user. For example, if a user seeks to identify nearbyrestaurants and the associated wait time for each restaurant, thelatency analysis system will—in response to the request—identify thewait time at restaurants near the user device. Likewise, if a userrequests grocery stores nearby, the latency analysis system can providecheckout times for various nearby grocery stores. The user then receivesthe communication on the user device of the user.

In certain examples, the latency analysis system may communicate aresponse to the user that links latency-period determinations with otheruseful information. For example, the latency analysis system may couplethe latency-period determinations with travel time to variouspoints-of-interest. If the latency analysis system receives a userrequest for nearby grocery stores, for example, the latency analysissystem may provide the checkout time combined with the travel time tothe points-of-interest to provide an overall user experience time. Forexample, the latency analysis system may identify five nearby grocerystores based on the current location of the user device, along with thecheckout times at each grocery store. And, based on the latency-periodinformation for each grocery store, the latency analysis system may alsomake specific recommendations, such as a ranking order of which grocerystores are faster on the whole. In other words, the latency analysissystem may inform the user that a grocery store that is further away isoverall the fastest option because of shorter checkout times at thegrocery store. The latency analysis system can determine and provide avariety of responses that incorporate (or are based on) thelatency-period data.

When communicating responses that incorporate latency-period data, thelatency analysis system can provide qualitative or quantitativelatency-period information to the user. For example, using thelatency-period data, the latency analysis system may communicate thatone point-of-interest has a longer wait time than one or more otherpoints-of-interest. The latency analysis system may likewise inform auser that certain times of the day are better than others for arrivingat the point-of-interest. Yet in other examples, the latency analysissystem may inform the user that a particular point-of-interest has alonger (quantitatively) wait time than one or more otherpoints-of-interest. For example, the latency analysis system may informthe user that a particular restaurant has a 20-minute wait, whereas twoother nearby restaurants have a 10-minute wait time and a 5-minute waittime, respectively.

In another example, the latency analysis system combines latency-periodinformation with estimated drive time information to provide aquantitative total time for the point-of-interest. For example, if basedon the latency-period data for a grocery store the latency analysissystem determines that the checkout time at a grocery store is 7minutes—and the drive time to the grocery store is 13 minutes—thelatency analysis system may communicate a total time of 20 minutes tothe user for the grocery store. In other example embodiments, thelatency analysis system may present results incorporating the latencyperiod information in a subtle manner. For example, the latency analysissystem may rank or order multiple points-of-interest based on theexpected total experience time and present the orderedpoints-of-interest to the user. In certain embodiments, the user mayselect a feature that requests search results are ordered based on waittime or total user experience time. The presented results may provide alist of the ordered points-of-interest and may or may not also show thecorresponding times.

Also as disclosed herein, the latency analysis system may rely onlatency period data to determine and generate a shopping route (oralternate route) for a user that is shopping for specific products. Forexample, a user may provide a shopping list of products to the latencyanalysis system. Based on the location of the user and the latencyperiods at one or more merchant locations offering the products on theshopping list for sale, the latency analysis system determines ashopping route, such as a faster shopping route or alternate route, forthe user to obtain the products. The latency analysis system thencommunicates the shopping route to the user via the user device of theuser.

More particularly, a user may enter a shopping list of products that theuser intends to purchase, such as on a user interface of the user deviceof the user. In certain examples, the user may also identify merchantlocations where the user expects to purchase the products. The user mayalso provide an expected departure time, such as the time the userexpects to leave the user's current location to begin the shopping trip.The user may also provide other user preferences, such as a preferredmode of travel, including, for example, walking bicycle, car, train, orcombinations thereof. The latency analysis system then receives theuser's shopping list, along with the optionally identified merchantlocations for obtaining the products on the list, any departure time,mode of transportation, and other user preferences.

After receiving the user's shopping list, for example, the latencyanalysis system identifies the current location of the user device (andhence the user). Based on the location of the user device, the latencyanalysis system determines merchant locations near the user device, suchas merchant locations within a defined radius around the user device,offering one or more of the products for sale. In certain examples, inaddition to identifying individual points-of-interest from the locationhistory data as described above, the latency analysis system mayidentify specific merchant locations (as points-of-interest) thatgenerally offer products for sale. The latency analysis system may thenassociate the products in a record for the merchant, such that theproduct information is accessible for the merchant location.Additionally or alternatively, the latency analysis system maydetermine, in response to receiving a user shopping list, nearbymerchants that offer one or more of the products by sale by accessing awebsite of the merchant. The latency analysis system may also determineother information, such as the price of the one or more products atdifferent merchant locations and/or offers associated with the one ormore products. In certain example embodiments, such as when the userprovides a departure location that is different from the currentlocation of the user, the latency analysis system determines merchantlocations that are near the departure location.

Once the latency analysis system determines one or more merchantlocations near the user device (or the departure location) offering oneor more of the products for sale, the latency analysis system determinesa latency period for the merchant locations as described herein. Forexample, based on the location data for the determined merchantlocations, the latency analysis system may determine the current orexpected wait time of the merchant locations, such as the time of daythat one or more of the merchant locations are busy or less busy asdescribed herein. The latency analysis system may also determine, forexample, whether a particular merchant location offering one or more ofthe products for sale is open or closed. The latency analysis may alsodetermine the expected travel time to and from the merchant.

Based on determined latency period for the one or more of the merchantlocations offering the one or more of the products for sale, the latencyanalysis system then determines a shopping route or alternate shoppingroutes for obtaining one or more of the products. In certainembodiments, the latency analysis system determines the most efficientroute, for example, for the user to obtain the one or more products onthe user's shopping list. For example, if a user identifies ten productson a shopping list, the latency analysis system determines—based on thelatency periods for merchant locations near the user—the order in whichthe user should visit the determined merchant locations to obtain theten products. In other words, based on the latency period data for eachdetermined merchant location, the latency analysis system determines theorder the user should visit each merchant location so that the amount oftime the user spends in each location gathering products is minimized.

For example, the latency analysis system may determine that three of theproducts on the shopping list of the user can be obtained at merchant A,while two of the products can be obtained at merchant B, and theremaining products can be obtained at merchant C. Based on thedetermined latency period data for each of merchants A, B, and, C, thelatency analysis system may then determine that—if a user leaves thecurrent user device location at 1:00 p.m. to begin shopping—the userwill most efficiently (most quickly) obtain the ten products by firstvisiting merchant B, then merchant C, and then lastly merchant A. Forexample, the latency analysis system may determine that departing for ashopping trip at 1:00 p.m. and traveling to merchant B, C, and then A(in this order) may save the user 30 minutes when compared to departingat 1:00 p.m. and traveling to merchant A, then to merchant B, and thento merchant C.

In certain examples, the latency analysis system may rely on the latencyperiod data to also determine the best departure time for the user. Forexample, the latency analysis system may determine that departing at2:00 p.m., instead of 1:00 p.m. on the same day—and traveling tomerchant B, C, and then A—results in a more optimal overall route forthe user to obtain the ten products. In certain examples, the latencyanalysis system may determine multiple departure times and routesassociated with each departure time. In certain examples, the latencyanalysis system may determine a specific day is preferred. For example,the latency analysis system may determine that completing the shoppingtrip on a Monday is faster than completing the same shopping trip on aSunday.

In certain examples, such as when the latency analysis system receivesmerchant locations from the user, the latency analysis system mayinclude the user-identified locations in the optimal routedetermination. That is, the latency analysis system may determine thatincluding one or more of the user-identified locations results in thefastest route (or an faster alternate route) for the user to obtain theproducts on a shopping list. In certain examples, the latency analysissystem may determine a shopping route that includes only the merchantlocations that the user identifies. In certain examples, the latencyanalysis system may suggest merchant locations that are different thanthose the user identifies.

In certain examples, when determining the latency periods for merchantlocations offering the one or more products on the user's shopping listfor sale, the latency analysis system may couple the latency-perioddeterminations with travel time to the merchant locations as describedherein. For example, travel time alone may indicate a particular routewhere the user travels from merchant A to merchant B and then tomerchant C to obtain the shopping list products, whereas latency perioddata alone may indicate that the user should travel to Merchant B, thenmerchant C, and then merchant A to obtain the products. Coupling latencyperiod data with travel-time data, however, may result in a generatedroute, such as a faster route, where the user travels first to merchantA, then merchant C, then merchant B. The travel time may include, forexample, walking time, bicycling time, or driving time.

After determining a route for the user to obtain the products on theshopping list, the latency analysis system communicates the route to theuser device of the user. Hence, the latency analysis system provides theuser with a preferred route, for example, to obtain one or more of theproducts on the users shopping list. In certain examples, the latencyanalysis system may provide the user with a suggested departure time ora list of departure times that are each associated with a particularroute. In certain examples, the latency analysis system may includetravel time associated with a route provided to the user, thus informingthe user of the total time to obtain products on the shopping list ofthe user.

In certain example embodiments, the latency analysis system may providea user interface on the user computing device of the user so that theuser can “check off” products on the shopping list that the userpurchases. In certain other examples, the latency analysis system mayautomatically “check off” products that the user purchases after theuser purchases the products. For example, after a user leaves a merchantlocation on the shopping route, the latency analysis system may assumethat the user has obtained the products associated with the merchantlocation. In other examples, the latency analysis system may confirmthat the user purchased the products, such as by reading purchasetransaction information associated with a digital wallet of the user.

By using and relying on the methods and systems described herein, a userthat receives communications incorporating latency-period information,such as wait times at a specific points-of-interest, can make informedchoices about the points-of-interest. For example, the user candecide—based on wait times among nearby grocery stores—which specificgrocery store the user wants to do his or her grocery shopping. Themethods and systems described herein not only benefit the user, but alsomerchants. For example, grocery stores can use the latency-periodinformation to monitor which times of day (and/or day of the week ormonth, for example) the store's checkout lines are the slowest. Thegrocery store can then adjust staffing, for example, based on user flowthrough the checkout lines. The grocery store can also use thelatency-period data and information, for example, to re-direct users toother locations of the grocery store chain that are less busy. Further,by providing methods and systems to generate one or more shoppingroutes, the methods and systems disclosed herein allow a user to morequickly and efficiently obtain products on a shopping list of the user.

Example System Architectures

Turning now to the drawings, in which like numerals indicate like (butnot necessarily identical) elements throughout the figures, exampleembodiments are described in detail.

FIG. 1 is a block diagram depicting a system for determining a latencyperiod for a points-of-interest, in accordance with certain exampleembodiments.

As depicted in FIG. 1, the exemplary operating environment 100 includesa user network computing device 110, a merchant computing system 130,and a latency analysis computing system 140 that communicate with eachother via one or more networks 105. In another example embodiment, twoor more of these systems (including systems 110, 130, and 140) or partsthereof are integrated into the same system. In certain exampleembodiments, a user 101 associated with a user device 110 must installan application and/or make a feature selection on the user device 110 toobtain the benefits of the methods and techniques described herein.

Each network 105 includes a wired or wireless telecommunication means bywhich network devices (including devices 110, 130, and 140) can exchangedata. For example, each network 105 can include a local area network(“LAN”), a wide area network (“WAN”), an intranet, an Internet, astorage area network (SAN), a personal area network (PAN), ametropolitan area network (MAN), a wireless local area network (WLAN), avirtual private network (VPN), a cellular or other mobile communicationnetwork, Bluetooth, near field communication (NFC), or any combinationthereof or any other appropriate architecture or system that facilitatesthe communication of signals, data, and/or messages. Throughout thediscussion of example embodiments, it should be understood that theterms “data” and “information” are used interchangeably herein to referto text, images, audio, video, or any other form of information that canexist in a computer-based environment.

Each network computing device 110, 130, and 140 includes a device havinga communication module capable of transmitting and receiving data overthe network 105. For example, each network device 110, 130, and 140 caninclude a server, desktop computer, laptop computer, tablet computer, atelevision with one or more processors embedded therein and/or coupledthereto, smart phone, handheld computer, personal digital assistant(“PDA”), or any other wired or wireless, processor-driven device. In theexample embodiment depicted in FIG. 1, the network devices 110, 130, and140 are operated by end-users or consumers, merchant system operators,and latency analysis system operators.

The user 101 can employ a communication application 113, such as a webbrowser application 114 or a stand-alone application, to view, download,upload, or otherwise access documents or web pages via a distributednetwork 105. The communication application 113 of the user computingdevice 110 can interact with web servers or other computing devicesconnected to the network 105. For example, the communication application113 can interact with the user network computing device 110, themerchant system 130, and/or the latency analysis system 140. Thecommunication application 113 may also comprise a web browser (notshown), which provides a user interface, for example, for accessingother devices associated with the network 105.

The user computing device 110 includes a latency analysis application112. The latency analysis application 112, for example, communicates andinteracts with the latency analysis system 140, such as via that thecommunication application 113. In order to obtain the benefits of thelatency analysis system 140 as described herein, for example, a user 101may have to download and install the latency analysis application 112 onthe user device 110. The latency analysis application 112, for example,may be configured, based on user preferences, to obtain, receive, andcommunicate location history of the user 101, including find-grainedlocation data, to latency analysis system 140. The latency analysisapplication 112 may also be configured to receive a shopping list of auser 101 and to provide a shopping route to the user 101 for obtainingone or more of the products on the shopping list.

In certain example embodiments, the user computing device 110 mayinclude a digital wallet application (not shown). The digital walletapplication may encompass any application, hardware, software, orprocess the user computing device 110 may employ to assist the user 101in completing a purchase transaction. The digital wallet application caninteract with the communication application 113 or can be embodied as acompanion application of the communication application 113. As acompanion application, the digital wallet application can execute withinthe communication application 113. That is, the digital walletapplication may be an application program embedded in the communicationapplication 113.

For example, the latency analysis application 112 may be configured tocommunicate and interact with a location service provider that, inconjunction with the user device 110, facilitates determination of thelocation of the user device 110. For example, the latency analysisapplication 112 may, along with a location service and/or hardware ofthe user device 110, rely on WiFi signals and cellular communicationtowers to determine the location of the user device 110. Additionally oralternatively, the latency analysis application 112 may rely onsatellites, Global Positioning System (“GPS”) location technology, aNetwork Location Provider (“NLP”), a map application, or other locationidentifying technology of the user device 110 to determine locationhistory for the user device 110. Additionally or alternatively, thelatency analysis system may rely on enhanced GPS systems and methods,such as those associated with a Differential Global Positioning System(“DGPS”). Additionally or alternatively, the latency analysis system mayrely on indoor localization techniques. In certain example embodiments,the latency analysis application 112 can interact with other applicationon the user device 110, such as a mapping application (not shown) on theuser device 110 and/or a digital wallet application (not shown).

Alternatively, the latency analysis application 112 can be embodied as acompanion application of a mapping application on the user device 110.As a companion application, the latency analysis application 112 canexecute within the mapping application. That is, the latency analysisapplication 112 may be an application program embedded in the mappingapplication. In certain example embodiments, the latency analysisapplication 112 executes and operates independently of the mappingapplication. In certain example embodiments, the latency analysisapplication 112 includes mapping components that allow the latencyanalysis application 112 to present and display mapping information tothe user 101.

The user computing device 110 may also include a data storage unit 117.The example data storage unit 117 can include one or more tangiblecomputer-readable storage devices. The data storage unit 117 can be acomponent of the user device 110 or be logically coupled to the userdevice 110. For example, the data storage unit 117 can include on-boardflash memory and/or one or more removable memory cards or removableflash memory. In certain example embodiments, the data storage unit 117may, at the option of the user, store location data pertaining to theuser 101. In certain example embodiments, the data storage unit 117 mayinclude cache memory that can, for example, receive and store locationdata for the user device 110.

The merchant computing system 130 represents a system that offersproducts and/or services for the user 101 to purchase or use. In certainexample embodiments, the merchant system 130 includes a point-of-sale(“POS”) terminal 134. The point-of-sale terminal 134 may be operated bya salesperson that enters purchase data into the point-of-sale terminalto complete a purchase transaction. The merchant system 130 may be aphysical location, such as any point-of-interest that may be of interestto a user 101. Affiliated or associated with the merchant system 130 isa merchant system operator (not shown). The merchant computing system130 may comprise a merchant server 135, which in certain exampleembodiments may represent the computer-implemented system that themerchant system 120 employs to create and assemble a website 136 andcontent for the website 136. In certain example embodiments, apoint-of-interest as described herein may or may not require all thecomponents of the merchant system 130, such as a merchant server 135 orwebsite 136 of the merchant system. For example, the merchant system 130may represent a point-of-interest having a physical location with apoint-of-sale terminal 134. In certain example embodiments, the system130 may include multiple merchant locations, such as multiple locationsof a merchant chain.

The latency analysis system 140 represents a system for analyzing anddetermining latency periods at one or more points-of-interest. Thelatency analysis system 140 also represents a system that, based onlatency period determinations, determines one or more shopping routesfor a user 101. The latency analysis system 140 is configured tointeract with and receive data and information from the user computingdevice 110 via the network 105. For example, at the option of the user101, latency analysis system 140 receives user location history from theuser computing device 110, such as from the latency analysis application112 and/or a mapping application (not shown) on the user device 110. Thelatency analysis system 140 is also configured to communicate with themerchant system 130, such as via the network 105.

The latency analysis system 140 can include a web sever 141, which mayrepresent the computer-implemented system that the latency analysissystem 140 employs to determine latency intervals for user devices 110and latency periods for points-of-interest. For example, the latencyanalysis system 140 and associated web server 141 may be configured toreceive and/or obtain user device location history, determine latencyintervals for user devices, determine latency periods forpoints-of-interest, and process user requests involving latency perioddeterminations. The latency analysis system 140 may also include awebsite 142 and a user account 143. A user 101, for example, may utilizea user interface of the website 142 to register with the latencyanalysis system 140 and hence create a record with the latency analysissystem 140, such as the user account 143. In certain exampleembodiments, the user account 143 is associated with a financial accountof the user 101, such as a digital wallet account (not shown) of theuser 101.

The latency analysis system 140 may also include an accessible datastorage unit 144. In certain example embodiments, for example, the datastorage unit 144 stores received location history of the multiple users101. For example, the data storage unit 144 may receive and storelocation history generated when users 101, with their user computingdevices 110, visit various points-of-interest. The exemplary datastorage unit 144 can include one or more tangible computer-readablemedia. The data storage unit 144 can be stored on the user device 110 orcan be logically coupled to the user device 110. For example, the datastorage unit 144 can include on-board flash memory and/or one or moreremovable memory cards or removable flash memory.

In certain example embodiments, the latency analysis functions of thelatency analysis system 140 operate and execute fully and completely onthe user device 110, such as within, or as a companion application to,the latency analysis application 112. Alternatively, the latencyanalysis functions of the latency analysis system 140 may operate andexecute separately and independently from the user device 110. Forexample, latency analysis system 140 may operate and execute within aseparate computing system or other computing system that determineslatency periods as described herein. Alternatively, in other exampleembodiments the latency analysis functions of the latency analysissystem 140 may execute partially on the user device 110 and/or partiallyon a separate computing system. For example, the latency analysisfunctions of the latency analysis system 140 may occur both via thelatency analysis system 140 and the latency analysis application 112.

It will be appreciated that the network connections shown arc exampleand other means of establishing a communications link between thecomputers and devices can be used. Moreover, those having ordinary skillin the art and having the benefit of the present disclosure willappreciate that the user device 110, merchant system 130, and latencyanalysis system 140 in FIG. 1 can have any of several other suitablecomputer system configurations. For example, a user computing device 110embodied as a mobile phone or handheld computer may not include all thecomponents described above.

Example Processes

The components of the example operating environment 100 are describedhereinafter with reference to the example methods illustrated in FIGS.2-5.

FIG. 2 is a block flow diagram depicting a method 200 for determining alatency period response for a user, in accordance with certain exampleembodiments.

With reference to FIGS. 1 and 2, in block 205, the latency analysissystem receives user 101 registrations from multiple users 101. That is,users 101 desiring to provide the location information of their userdevices 110 to the latency analysis system 140 may register with thelatency analysis system 140. As part of the registration process, aparticular user 101 may provide the user's name and other information sothat the latency analysis system 140 can create a user account 143 (orrecord) for the user 101. In certain example embodiments, to obtain thebenefits of the methods and techniques described herein, the user 101may have to select a setting on the user device 110. Additionally oralternatively, the user 101 may have to install an application on theuser device 110, such as a latency analysis application 112, whichallows the latency analysis system 140 to receive location history fromthe user device 110 of the registered user 101. As another example, thelatency analysis system 140 may also obtain authorization from the user101 to receive location history from the user device 110 of theregistered user 101, such as a mobile phone of the user 101.

In block 210, the latency analysis system 140 determines the latencyperiod for specific points-of-interest. That is, for one or morepoints-of-interest, the latency analysis system 140 uses locationhistory received from multiple users, for example, to determine thelatency period (delay or wait-time) at the one or morepoints-of-interest. Upon receipt of the location history, for example,the location history can be stripped of any user identifyinginformation. The latency analysis system thus receives only data showingthat a device (without knowing which device) is at a particular locationat a particular time. For example, a user 101 may select a setting onthe user device 110, such as a setting of the latency analysisapplication 112, which strips the location information ofuser-identifying information before the latency analysis system 140receives the location history. In certain examples, after using thereceived location history to determine a latency for variouspoints-of-interest, the latency analysis system 140 compares the latencyperiod for each of the one or more points-of-interest or among differentpoints-of-interest. The details of block 210 arc described in furtherdetail below with reference to FIG. 3.

FIG. 3 is a block flow diagram depicting a method 210 for determiningthe latency period for a specific point-of-interest, in accordance withcertain example embodiments, as referenced in block 210 of FIG. 2.

With reference to FIGS. 1 and 2, in block 305 of method 210, the latencyanalysis system 140 receives location history data from user devices110. That is, based on the authorizations of multiple users 101 toreceive location history data, multiple user devices 110 communicatelocation histories to the latency analysis system 140 and the latencyanalysis system 140 receives the location history. Each location historyincludes, for example, information identifying past and presentlocations of the user device 110, as well as the date and time the userdevice 110 was at a location. For example, as a user device 110 travelsto different locations, the location of the user device 110 may bestored in the data storage unit 117 of the user device 110, such as inthe cache memory of the user device 110, thus generating a locationhistory for the user device 110. The latency analysis application 112 onthe user device 110, for example, can then communicate the locationhistory to the latency analysis system 140, such as via thecommunication application 113 of the user device 110 and via the network105.

In certain example embodiments, a location application (not shown) onthe user device 110, for example, determines the location of the userdevice 110, such as the latitude and longitude coordinates of the userdevice 110. For example, the location application may associate with alocation-based service to determine the location of the user device 110.The location provider and/or the user device 110, for example, may relyon WiFi signals, cellular communication data, satellites, a GlobalPositioning System (“GPS”) location technology, a Differential GlobalPositioning System (“DGPS”), a Network Location Provider (“NLP”), a mapapplication, an indoor localization application, or other locationidentifying technology of the user device 110 to determine the userdevice location. Additionally or alternatively, the location history forthe user device 110 may comprise any other suitable location data, suchas the street address for the user device 110 or Ordnance Survey GridReference information for the user device 110. The location application,for example, communicates the location history to the latency analysissystem 140, and the latency analysis system 140 receives the locationhistory. In certain example embodiments, the latency analysis system 140converts location data to latitude and longitude coordinates for theuser device 110.

In certain examples, the location history that the latency analysissystem 140 receives includes fine-grained location history information,such as location data from a Differential Global Positioning System(“DGPS”). In other words, the location history may be highly accurateand hence be able to identify the location of the user device 110 towithin a few feet or even a few inches. For example, the fine-grainedlocation history may place the user device 110 at a specificgeographical location within a point-of-interest, such as at a checkoutline at a grocery store or at the entrance area of a restaurant. Afterreceiving the location history from the user devices, the latencyanalysis system 140 can, in certain examples, store the location historyinformation, such as in the data storage unit 144 of the latencyanalysis system 140. The latency analysis system 140 can then lateraccess the stored location history data from the data storage unit 144.

In block 310, the latency analysis system 140 identifies specificpoints-of-interest from the received location history. That is, for oneor more of the user devices 110, when the latency analysis system 140receives location history from the user device 110, the latency analysissystem identifies—from the location history for the userdevice—points-of-interest that correspond to the location of the userdevice 110. The points-of-interest can comprise specific merchantstorefronts or merchant locations, retailers, restaurants, landmarks,buildings, parks, rail stations, airports, ports, sports arenas, or anyother geographical location that might be of interest to one or moreusers 101. For example, several users 101 carrying mobile telephones mayvisit a specific merchant system 130 having a point-of-sale terminal134, such as a restaurant or grocery store. After the latency analysissystem 140 receives the location history for the users' mobiletelephones, the latency analysis system identifies the specificrestaurant or grocery store that the users 101 are visiting (or that theusers have visited). In certain example embodiments, thepoints-of-interest may include particular merchant locations, such asparticular merchant locations offering specific products for sale.

In certain example embodiments, in addition to identifying specificpoints-of-interest, the latency analysis system 140 determines—forparticular merchant locations—specific products that the merchant offersfor sale. For example, the latency analysis system 140 may request, viathe network 105, a product listing for a particular merchant location,such as a merchant point-of-sale terminal 134, of a merchant system 130.The latency analysis system 140 then receives the product listing fromthe merchant system 130. Additionally or alternatively, the latencyanalysis system 140 determines products that a particular merchantlocation offers for sale by accessing the merchant website 136 of themerchant location. That is, by reading the website 136 of the merchantlocation, the latency analysis system 140 determines the products thatthe merchant location, such as a merchant point-of-sale terminal 134,offers for sale. The latency analysis system 140 can then associate theproducts a particular merchant offers for sale with a record for theparticular merchant.

Additionally or alternatively, the latency analysis system 140determines products that a particular merchant offers for sale based onreceived purchase transaction information from the merchant location.That is, in certain example embodiments, the user account 143 of thelatency analysis system 140 may be associated with a financialtransaction account of the user 101, such as a digital wallet account ofthe user 101. As a user 101 purchases products with the financialaccount, the latency analysis system 140 receives informationidentifying the purchased products. As the latency analysis system 140receives product information for multiple users 101, the latencyanalysis system 140 may determine a product list for the merchantlocation (which can be stripped of any user identifying information).The latency analysis system 140 can then associate the determinedproduct list for particular merchant offers for sale with a record forthe particular merchant. As used herein, a “product” comprises anytangible or intangible product, including services. For example, theproduct may include merchandise offered for sale at a merchantpoint-of-sale terminal 130 of a merchant location of a merchant system130.

In block 315, in order to determine a latency period for a specificpoint-of-interest, the latency analysis system 140 determines a latencyinterval start time for a user device 110 at the specificpoint-of-interest. That is, for a particular user device 110 that iscurrently at (or has been to) the specific point-of-interest, such thepoint-of-sale terminal 134 of a merchant system 130, the latencyanalysis system 140 determines from the location history a start time(or first time) for the user device 110. The start time (or first time)corresponds to the time from which the latency analysis system 140determines how long the user carrying the device was at thepoint-of-interest. For example, the latency analysis system 140 maydetermine that the start time for a user device 110 at a merchant system130, such as a grocery store, occurs when the user device 110 arrives atthe checkout line of the grocery store. In other words, fine-grainedlocation data, for example, in the location history of the user device110 may place the user device 110 at the entrance to a checkout in aparticular grocery store at a specific time. The latency analysis system140 may then determine that the time the user device entered thecheckout line is the start time for the user device 110 at the grocerystore. In certain example embodiments, the latency analysis system 140may determine that user 101 leaves a checkout line when the user 101pays for a product, such as when the user 101 pays with a digital walletaccount. For example, the user 101 may provide financial accountinformation to a point-of-sale terminal 134, such as through near fieldcommunication (“NFC”). The latency analysis system 140 then determinesthe checkout time, for example, based on the time of the payment uponreceipt of transaction information from the digital wallet applicationof the user 101.

In certain example embodiments, the start time may correspond to thetime when the latency analysis system 140 first determines that a userdevice 110 is waiting in a line. For example, the latency analysissystem 140 may determine that the start time occurs when a user device110 is no longer moving around within a merchant location, but ratherremaining relatively stationary, such as in a checkout line at a grocerystore. In certain example embodiments, other user devices 110 may alsobe relatively stationary in the same location within a merchant, inwhich case the location of the relatively stationary user devices 101may correspond to the location of a checkout line of the merchant. Bybeing relatively stationary, the only motion associated with the userdevice would correspond to a shuffling motion (for example, moving ashort distance in a slow time frame), for example, that is commonlyassociated with a user 101 carrying a user device 110 as the user 101progresses through a line.

Similarly, the latency analysis system 140 may determine that the starttime (or first time) for a user device 110 that has been to a restaurantwas when the user device arrived at the restaurant. Alternatively, thelatency analysis system 140 may determine, such as by relying onfined-grained location data, that the start time for the user device 110at the restaurant at occurs when the user device arrives in the waitingarea of the restaurant, and, for example, begins to wait. In anotherexample, latency analysis system 140 may determine that a start time foran amusement park occurs when the user device 110 arrives in a line toget in to the amusement park. In another example embodiment, the latencyanalysis system 140 may determine that the start time occurs—for aparticular ride at the amusement park—when the user device 110 arrivesin the line for the ride and/or begins to wait in line, for example. Asone skilled in the art will appreciate, the latency analysis system 140can determine a variety of start times that correspond to when thelatency analysis system 140 begins the determination of a latencyinterval for a particular user device 110 at a specificpoint-of-interest.

In block 320, the latency analysis system 140 determines a latencyinterval end time (or second time) for the user device 110 at thespecific point-of-interest. The latency interval end time, for example,corresponds to the time point that the latency analysis system 140determines, for example, that the latency event being analyzed ceases.For example, the end time may correspond to the time that the latencyanalysis system determines that the user 101 carrying the user device110 has left (or is no longer waiting) at the point-of-interest. Inother words, if the latency analysis system 140 is determining how longit takes users 101 to pass through a checkout line at a point-of-saleterminal at a merchant system 130, the end time for a particular userdevice 110 may correspond to when the user device 110 first leaves thecheckout line.

Alternatively, the latency analysis system 140 may determine the endtime corresponds to when the user device 110 leaves the merchant system130. In certain other example embodiments, such as when the latencyanalysis system 140 is determining the wait time at a specificrestaurant, the latency analysis system 140 may determine that the endtime occurs when the user device 110 leaves the waiting area of therestaurant and enters the seating area. As one skilled in the art willappreciate, the latency analysis system 140 can determine a variety ofend times that correspond to when the latency analysis system 140 ceasesthe determination of a latency interval for a particular user device 110at a specific point-of-interest.

In block 325, the latency analysis system 140 compares the latencyinterval start time to latency interval end time to determine a latencyinterval at the point-of-interest. That is, after determining a latencyinterval start time (first time) and an end time (second time) for aparticular user device at a specific point-of-interest, the latencyanalysis system 140 determines the elapsed time between the start timeand the end time. The time that has elapsed from the start time to theend time thus corresponds to the latency interval at the specificpoint-of-interest for the particular user device 110.

For example, that latency analysis system 140 may determine, based onthe received location history, that a user device 110 arrives at aspecific grocery store checkout line at 5:50 p.m. on a specific date andthen leaves the grocery store checkout line at 6:00 on the same date. Insuch an example, the latency analysis system 140 may determine a starttime of 5:50 p.m. and an end time of 6:00 p.m. Based on the determinedstart time and end time, the latency analysis system 140 may determinelatency period interval—for the particular user device 110 at thespecific point-of-interest—of 10 minutes. In other words, the determinedlatency interval of 10 minutes is a function of the time that elapsedbetween start time of 5:50 p.m. and an end time of 6:00 p.m. The latencyinterval thus corresponds to the amount of time it took the particularuser 101—and more precisely the user's device 110—to move through thecheckout line.

In block 330, the latency analysis system 140 aggregates latencyintervals from multiple user devices 110 to determine one or morelatency periods for the specific point-of-interest at a defined time.That is, after the latency analysis system 140 determines a latencyinterval for two or more particular user devices 110 at a specificpoint-of-interest, the latency analysis system 140 determines thelatency period—at a defined time—as a function of the latency intervalfor the two user devices 110. For example, the latency analysis system140 may determine that the latency period for a specific retailer at5:00 on a specific date is 10 minutes. In another example, the latencyanalysis system may determine that users arriving in a checkout linebetween 5:00 p.m. to 6:00 p.m. on a Sunday (a defined time) can expectto spend to about 15 minutes in a checkout line. In other words, thelatency period for 5:00 p.m. to 6:00 p.m. on a Sunday would be 15minutes.

To aggregate the latency intervals, the latency analysis system 140 mayaverage multiple latency intervals to determine the mean latencyinterval duration for the multiple user devices 110. The mean latencyinterval duration would then, for example, correspond to the latencyperiod. Alternatively, the latency analysis system 140 may rely on othermeans of aggregating the latency intervals to determine the latencyperiod, such as by determining the median, mode, or range associatedwith multiple latency intervals. By aggregating the latency intervals,the latency analysis system 140 determines one or more latency periodsfor a defined time.

For example, if four user devices 110 arrive at a specific retailerbetween 5:00 p.m. to 6:00 p.m. on a Sunday (a defined time), the latencyanalysis system 140 may determine four latency intervals. Each of thefive user devices 110 may arrive at point-of-interest at 5:00, 5:15,5:20, and 6:00 p.m. (start times), and respectively leave at 5:10, 5:30,5:30, and 6:05 p.m. (end times). The latency analysis system 140 thusmay respectively determine latency intervals of 10 minutes, 15 minutes,10 minutes, and 5 minutes for each of the four user devices 110. Byaveraging the determined latency intervals, the latency analysis system140 determines a latency period of 10 minutes for user devices 110arriving at the point-of-interest between 5:00 p.m. to 6:00 p.m. on theSunday.

In certain example embodiments, the latency analysis system 140 maydetermine several latency periods for the same point-of-interest. Forexample, the latency analysis system 140 may determine a latencyinterval for user devices 110 arriving at the point-of-interest atdifferent times of the day, week, month or year. In certain exampleembodiments, such as when the latency analysis system 140 is only ableto determine a single latency interval for a specific point-of-interest,the latency analysis system 140 may rely on the single latency intervalto determine the latency period. That is, the latency analysis system140 may determine that the latency interval for a particular user device110 equals or approximates the latency period for the point-of-interest.

In certain example embodiments, the latency analysis system 140determines a current or real-time latency period for a specificpoint-of-interest. That is, the latency analysis system 140 determinesthe current wait time at the point-of-interest, such as the wait time ata restaurant. For example, using location histories with fine-grainedlocation data, the latency analysis system 140 may determine thatmultiple user devices 110 gather in an area of the restaurant beforeproceeding to a table. The latency analysis system 140 maydetermine—based on the time that elapses from when the user devices 110arrive at the restaurant waiting area (start time) to the time the userdevices 110 leave the restaurant (end time)—multiple latency intervals.After averaging the latency intervals for the multiple user devices 110at the restaurant, the latency analysis system may determine determinesa latency period of 20 minutes, for example, for the restaurant. Thelatency period thus corresponds to the current wait time at therestaurant. The latency analysis system may likewise determine that, fora specific grocery store, the current latency period for moving througha checkout line is 10 minutes.

As one skilled in the art will appreciate, the latency analysis system140 may determine latency periods for a variety of differentpoints-of-interest. The latency analysis system 140 may also storelatency period information for several points-of-interest. For example,the latency analysis system 140 may store the latency period informationin the data storage unit 144 of the latency analysis system 140. Thelatency analysis system 140 may also store latency intervaldeterminations for a variety of points-of-interest in the in the datastorage unit 144 of the latency analysis system 140. The latencyanalysis system 140 can then access the stored latency period and/orlatency interval data to may additional determinations, such ascomparisons among different points-of-interest.

In block 335, the latency analysis system 140, in certain exampleembodiments, compares latency periods for the point-of-interest andamong different points-of-interest. That is, for the samepoint-of-interest, the latency analysis system 140 may compare thelatency period from different defined times, so as to make comparisonsbetween the different times for the same point-of-interest. For example,the latency analysis system 140 may compare the latency periods fordevices arriving at the point-of-interest around 5:00 p.m. on a givenday and devices arriving at the point-of-interest around 6:00 p.m. onthe same day. The latency analysis system 140 may also compare thelatency period at one point-of-interest to the latency periods at one ormore other points-of-interest. For example, for two points-of-interest,the latency analysis system 140 may determine the latency period, suchas a real-time latency period, for devices arriving at 5:00 p.m. Basedon the comparison between the two points-of-interest, the latencyanalysis system 140 can determine which point-of-interest currently thelongest wait time, for example.

When the latency analysis system 140 makes comparisons for the samepoint-of-interest, the latency analysis system 140 may rely onhistorical, latency-period data for a specific point-of-interest todetermine when certain activities at the point-of-interest occur fasteror slower. For example, the latency analysis system 140 may accesslatency period data stored in the data storage unit 144 of the latencyanalysis system 140. By relying on the historical latency-periodinformation, the latency analysis system 140 may determine a latencyperiod of 3.0 hours for users arriving at a merchant system 130, such asa restaurant, between 6:00 p.m. and 7:00 p.m. on a Friday. In contrast,the latency analysis system 140 may determine that the latency periodfor users arriving at the restaurant between 8:00 p.m. and 9:00 p.m. is1.5 hours on the same Friday. Hence, the latency analysis systemdetermines that the wait time for the restaurant is less—by 1.5hours—for user devices arriving at 8:00 p.m. on Friday.

The latency analysis system 140 may also rely on historicallatency-period data when making comparisons between two or moredifferent points-of-interest. For example, the latency analysis system140 may determine that one point-of-interest typically has shorterlatency period on Sunday evenings as compared to otherpoints-of-interest. The determined latency period at one grocery store,for example, may be 20 minutes at 5:00 p.m. on a Sunday, whereas thedetermined latency period for a nearby, second grocery store at the sametime is 5 minutes. The latency analysis system 140 thus determines thatthe latency period for the second grocery store is 15 minutes less thanthe other grocery store by comparing the latency periods.

In other example embodiments, the latency analysis system 140 maycompare the current latency periods for two or more points-of-interest,with or without relying on historical latency period data. For example,the latency analysis system 140 may compare the current or real-timelatency period for two or more points-of-interest, such as tworestaurants, at a defined time. In which case, the latency analysissystem 140 may rely on current latency-period data rather thanhistorical latency period data, for example. For example, the latencyanalysis system 140 may determine that one restaurant has a latencyperiod that is 30 minutes longer than the latency period at a second,nearby restaurant. Hence, the latency analysis system 140 determinesthat the second restaurant as a shorter wait time.

In certain example embodiments, after accumulating latency-period data,the latency analysis system 140 may rely on additional factors whenmaking a latency period determination for a point-of-interest. Forexample, in certain example embodiments, the latency analysis system 140relies on historical latency period data when making real-time,latency-period determinations. If, for example, the latency analysissystem 140 determines that a large number of user devices 110 are at aparticular point-of-interest, such as a restaurant, compared to theusual (historical) number of users at the restaurant, the latencyanalysis system 140 may adjust or modify the determined latency period.For example, the latency analysis system 140 may determine that thelatency period is longer than usual, regardless how long users (andtheir user devices) take to enter the restaurant and leave therestaurant. Alternatively, if the latency analysis system 140 determinesthat fewer than usual user devices 110 are at a point-of-interest, suchas when fewer users 101 are in line to enter an amusement park, thelatency analysis system 140 may reduce the latency period determination.

Similarly, the latency analysis system 140 may determine thatsignificantly more users 101 with user devices 110 than usual are in thevicinity of a specific point-of-interest. For example, a large number ofusers as compared to the usual (historical) number of users 101 may begathered at a theater that is adjacent to specific merchant system 130,such as a restaurant. Thus, the latency analysis system 140 maydetermine that the latency period is longer than usual—based on thenumber of users 101 in the vicinity—regardless how long users (and theiruser devices 110) take to enter the restaurant and leave the restaurantthat is adjacent to the restaurant.

Based on the determined population of user devices 110 (and hence users101) at or near the point-of-interest, the latency analysis system 140may adjust or modify the determined latency period for thepoint-of-interest in certain example embodiments. That is, the latencyanalysis system may adjust or modify the latency period beyond the timedetermined for user devices 110 entering and exiting apoint-of-interest. For example, if the latency analysis system 140determines that the latency period is 2 hours at a specific restaurant,the latency analysis system may add an additional hour to the latencyperiod to account for the additional users that are at an adjacenttheater that are likely to go to the restaurant. Similarly, if moreusers 101 than usual—based on historical, latency-period data—are at (orarrive at) a specific grocery store, the latency analysis system may addaddition time to the determined latency period beyond that determinedfor user devices entering and exiting the checkout line.

Alternatively, if a user population is much lower than usual at aspecific point-of-interest, the latency analysis system 140 in certainexample embodiments may decrease the determined latency period by adetermined amount. For example, if fewer users 101 (and their devices110) than usual are at an amusement park, the latency analysis system140 may determine that lines at the amusement park should be shorter.The latency analysis system 140 may adjust or modify the determinedlatency period for the amusement park based on the lower population ofpresent user devices 110. As those skilled in the art will appreciate,the latency analysis system 140 may account for various factors, such asuser population, at or near a variety of points-of-interest.

Returning to FIG. 2, in block 215 of FIG. 2, the latency analysis system140 receives a request from a user 101 regarding a point-of-interest.That is, a user 101 utilizes a user device 110 to communicate a requestfor which a latency period determination would be applicable, and thelatency analysis system 140 receives the request. For example, the userdevice 110 communicates the request over the network 105. The request,for example, may include any content for which a latency perioddetermination may be applicable. For example, a user 101 planning a tripto a grocery store may search for nearby grocery stores, such as on auser interface of a mapping application (not shown) on the user device110. In other example embodiments, the latency analysis application 112on the user device 110 may provide a user interface for the user 101 tosearch for or locate points-of-interest. The user 101 can enterpoint-of-interest information into the user interface, and the latencyanalysis system 140 receives the user's input.

For example, a user 101 may search for grocery stores that currentlyhave the fastest checkout times. In certain other example embodiments, auser 101 desiring to eat at a specific restaurant may search for therestaurant on a user interface of the user device 110, in which case thewait-time at the restaurant may be responsive to the search of the user101. Additionally or alternatively, the user 101 may search forrestaurants generally, such as for restaurants that are nearby. A user101 may also specifically request the wait time at the specificrestaurant, for example. In certain example embodiments, the user 101may seek the total experience time for one or more points-of-interest.For example, the user 101 may request the total time the user 101 willspend both traveling to a point-of-interest, such as a retailer, andthen passing through the retailer, such as through the checkout line atthe retailer. Likewise, the total experience time may include around-trip time, such as the total time for a user to travel to apoint-of-interest, pass through the point-of-interest, and return backto the original location of the user 101 (or to another specificlocation).

In certain other example embodiments, a user 101 may ask the latencyanalysis system 140, such as via the latency analysis application 112 onthe user device 110, for the best time to go to a point-of-interest inorder to avoid a wait. For example, the user 101 may ask the latencyanalysis system 140 what is the best time to go to a specific grocerystore. The latency analysis system 140 then receives and processes theuser's request. In certain other example embodiments, the user 101 mayseek the total experience time it will take the user 101 to visit apoint-of-interest, such as the time to travel to the point-of-interestand the time the user can expect to be at the point-of-interest. As oneskilled in the art will appreciate, a user 101 may provide a variety ofrequests for which latency period information may be responsive.

In certain example embodiments, the user 101 may request a shoppingroute (or alternate shopping routes) for obtaining a list of products ona shopping list. For example, the user 101 may submit a shopping list tothe latency analysis system 140, such as via a user interface of thelatency analysis application 112, along with a request for a shoppingroute for obtaining the products on the shopping list. The user device110 transmits the shopping list and the request to the latency analysissystem 140, such as via the network 105, and the latency analysis system140 receives the shopping list and the request. The latency analysissystem 140 then processes the request as described herein.

In block 220, the latency analysis system 140 reads and processes userrequest. That is, the latency analysis system 140 determines the contentof the request so that the latency analysis system 140 can determinewhether providing latency-period information is applicable to therequest of the user 101. For example, the latency analysis system 140may determine that the request involves one or more points-of-interest,such as a merchant system 130, where providing latency-periodinformation may be useful. By reading the request of the user 101, thelatency analysis system 140 may determine, for example, that the requestinvolves a nearby grocery stores, restaurants, or any other point (orpoints) of interest for which latency-period information may beapplicable and hence likely useful to the user 101.

In block 225, after the latency analysis system 140 determines that therequest of the user 101 contains content for which latency-periodinformation might be applicable, the latency analysis system 140determines latency-period information that is responsive to the requestof the user 101. That is, the latency analysis system 140 identifies thelatency-period information that addresses the determined content of therequest of the user 101.

For example, based on the content of the request, the latency analysissystem 140 may determine that the user 101 is seeking nearby chainretailers. In response to such a request, the latency analysis system140 determines, for example, the latency period for locations of theretailer near the user 101. For example, the latency analysis system 140determines current latency period for one or more of the retailers thatare within a configurable radius around the user device 110. In otherexample embodiments, the latency analysis system 140 may determine atotal experience time for locations of the retailer near the user 101.For example, the latency analysis system 140 determines thelatency-period information for one or more the retailers and thenincorporates the latency-period information in to a total experiencetime determination.

In certain example embodiments, such as when the request of user 101involves a real-time latency period determination, the latency analysissystem 140 may perform an additional latency-period determinations inresponse to receiving and reading the request of the user 101. That is,in response to receiving a request, the latency analysis system 140 maydetermine that updated (or current) information is needed in response tothe request. The latency analysis system 140 thus acquires the neededinformation in order to process the request of the user 101, such as bydetermining latency intervals for user devices 110 that are arriving atthe destination that is the subject of the user's request. For example,if the latency analysis system 140 receives a request for a current waittime at a specific restaurant, the latency analysis system 140 mayperform an additional latency-period determination in response toreceiving and reading such a request. In other embodiments, such as whenthe latency analysis system 140 does not have any historical locationdata for a specific point-of-interest, the latency analysis system 140may determine the latency period for the point-of-interest as describedherein in response to receiving and reading the user's request. Thelatency analysis system 140 thus generates the latency period inresponse

In block 230, the latency analysis system 140 communicates a response tothe user 101 that incorporates a latency-period determination in to theresponse. That is, based on the determined latency-period informationthat is responsive to the request of the user 101, the latency analysissystem 140 includes the responsive information in a communication to theuser 101. For example, the latency analysis system 140 communicates theresponsive latency period information to the latency analysisapplication 112 of the user device 110 via the network 105. The latencyanalysis application 112, for example, displays the responsiveinformation to the user 101 via a user interface of the latency analysisapplication 112.

In an example embodiment, if a user 101 requests the wait time at aspecific point-of-interest, such as a restaurant, the latency analysissystem 140 will provide the expected wait time for the restaurant to theuser 101 in a response to the user's request. If a user 101 makes arequest that involves comparing different points-of-interest, forexample, the latency analysis system will provide the comparativeinformation to the user 101. For example, if a user 101 seeks toidentify nearby restaurants and the associated wait time for eachrestaurant, the latency analysis system 140 will—in response to therequest—identify the wait time at restaurants near the user device. Thelatency analysis system 140 will then communicate the wait times for therestaurants to the user 101 via the user device 110 of the user 101.Likewise, if a user 101 requests grocery stores nearby, the latencyanalysis system 140 can provide checkout times for various nearbygrocery stores. The user then receives the communication on the userdevice of the user.

In certain example embodiments, such as when the request of the user 101involves a total experience time determination, the latency analysissystem 140 includes the total experience time in the communication tothe user 101. For example, the latency analysis system 140 may couplethe latency-period determinations with travel time to variouspoints-of-interest. If the latency analysis system 140 receives a userrequest for nearby grocery stores, for example, the latency analysissystem 140 may determine the checkout times for various grocery storesthat are, for example, in a configurable radius around the user device110. The latency analysis system 140 may also determine, such as byrelying on travel-time determination from a location-based serviceprovider, determine travel times to the grocery store. In other exampleembodiments, the latency analysis system 140, in conjunction with theuser device and a location-based service, for example, determine traveltimes to and from the grocery store. The latency analysis system 140 canthen include the travel time to one or more points-of-interest, such asnearby grocery stores, along with the latency period for the one or moregrocery stores that are nearby. In such an example, the latency analysissystem 140 provides the user 101 with a total experience time for theone or more grocery stores.

For example, in certain embodiments the latency analysis system 140 mayidentify five nearby grocery stores based on the current location of theuser device 110, along with the checkout times at each grocery store.And, based on the latency-period information for each grocery store, thelatency analysis system 140 may also make specific recommendations, suchas a ranking the order of which grocery stores are faster on the whole.In other words, the latency analysis system 140 may inform the user 101,via the user device 110, that a grocery store that is further away isoverall the fastest option because of shorter checkout times at thegrocery store. The latency analysis system 140 can thus determine andprovide a variety of responses that incorporate (or are based on) thelatency-period data.

Based on the content of the request of the user 101, the latencyanalysis system 140 may provide qualitative or quantitativelatency-period information to the user 101. For example, using thelatency-period data, the latency analysis system 140 may inform a theuser 101 that one point-of-interest has a qualitatively longer wait timethan one or more other points-of-interest—without providing the actualamount of the wait time. Hence, the latency analysis system 140 providesa qualitative response to the user 101 via the user device 110. Forexample, the latency analysis system 140 may inform the user 101 thatone retailer has checkout lines that are “faster” than anotherretailer's checkout line. Likewise, for a single point-of-interest,latency analysis system may inform a user 101 that certain times of theday are better than others for arriving at the point-of-interest,without providing quantitative information about the latency period.

In other example embodiments, the latency analysis system may inform theuser that a particular point-of-interest has a longer wait time(quantitatively) than one or more other points-of-interest. For example,the latency analysis system 140 may inform the user 101 that aparticular restaurant has a 20-minute wait, whereas two other nearbyrestaurants have a 10-minute wait time and a 5-minute wait time. Inanother example, the latency analysis system 140 combines latency-periodinformation with estimated travel time information to provide aquantitative total time for the point-of-interest (a total experiencetime, as described herein). For example, if based on the latency-perioddata for a grocery store the latency analysis 140 system determines thatthe checkout time at a specific grocery store is 7 minutes—and thetravel time to the grocery store is 13 minutes—the latency analysissystem 140 may communicate a total time of 20 minutes to the user forthe grocery store. The travel time, for example, may be a drive time,walk time, bicycling time, or other travel time that may be of interestto the user 101. In certain example embodiments, the latency analysissystem 140 may determine the total experience for a plurality ofpoints-of-interest.

FIG. 4 is an illustration depicting a user interface for communicating atotal experience time to a user for a plurality of points-of-interest,in accordance with certain example embodiments. For example, a user 101searches for a nearby point-of-interest with either a mappingapplication (not shown) of the user device 110 or with anotherapplication, such as the latency analysis application 112, thatcommunicates with the mapping application. When conducting the search,for example, the user 101 may select a setting, such as “Total Time: On”to indicate that the user 101 desires a total experience timedetermination for one or more points-of-interest. The point-of-interestcan be any point-of-interest as described herein.

Based on the user's search, the latency analysis system 140 receives therequest of the user 101 that involves a point-of-interest. The latencyanalysis system 140 determines the points-of-interest that are near theuser device 110, such as all the points-of-interest in a configurableradius around the user device 110 that match the user's search. Forexample, the latency analysis system 140 may determine fourpoints-of-interest near the user device 110. The latency analysis system140 also determines the latency period at each point-of-interest. Forexample, for points-of-interest A, B, C, and D, the latency analysissystem 140 may determine latency periods of 25 minutes, 1 minute, 1 hourand 5 minutes, and 38 minutes, respectively.

The latency analysis system 140 also retrieves or determines travel timeto the identified points-of-interest. For example, the latency analysissystem 140 may use or rely on travel times determined by the mappingapplication to determine the travel times to the point-of-interest.Continuing with the above example, for points-of-interest A, B, C, andD, the latency analysis system 140 may determine or obtain travel timesof 13 minutes, 15 minutes, 8 minutes, and 10 minutes, respectively. Thelatency analysis system 140 then couples the travel time with thelatency-period determinations for each of the identifiedpoints-of-interest, which results in a total experience time for theidentified points-of-interest. For example, for point-of-interest A thetotal time would be 38 minutes (that is, 25 minutes latency time and 13minutes of travel time). Similarly, the latency analysis system 140would determine total experience times for points-of-interest B, C, andD of 16 minutes, 1 hour and 13 minutes, and 48 minutes, respectively.The latency analysis system 140 then communicates the total experiencetimes to the user device 110, which informs the user 101 of the totalexperience times.

As shown in FIG. 4, for example, the latency analysis system 140 returnsfour points-of-interest to the user 101 via a user interface 405 of amapping application. With the “Total Time: ON,” for example, a totalexperience time is displayed for each of the four points-of-interest(points-of-interest A, B, C, and D) on the user interface 405. That is,the total time to travel to each point-of-interest, as combined with thelatency period for each point-of-interest, is provided to the user 101on the user interface 405. In the example user interface 405, althoughpoint-of-interest B is the furthest away, time-wise (15 minutes),point-of-interest B has the shortest total experience time (16 minutes).In contrast, point-of-interest C, which is the closestpoint-of-interest, time-wise (8 minutes), has the longest totalexperience time (1 hour and 13 minutes). Based on the informationprovided in the user interface 405 of the example in FIG. 4, a user 101may thus chose to visit point-of-interest B over point-of-interest C.With the information that the latency analysis system 140 provides, suchas the total time experience, a user 101 may choose to visitpoint-of-interest C based on travel time, while not knowing that thewait time or delay at point-of-interest C is over an hour.

FIG. 5 is a block flow diagram depicting a method 500 for generating ashopping route of a user, in accordance with certain exampleembodiments.

With reference to FIGS. 1 and 2, in block 505, the latency analysissystem 140 receives a shopping list from a user 101. The latencyanalysis system 140 also optionally receives possible merchant shoppinglocations for obtaining one or more products on the shopping list. Forexample, the latency analysis system application 112 may provide a userinterface that allows the user 101 to input products of a shopping listin to the user device 110. Hence, as a user 101 determines products thatthe user 101 desires to purchase, the user 101 inputs the products in tothe fields of the user interface on the user device 110. Additionally oralternatively, the user 101 may install a shopping list application (notshown) that provides the user 101 with a user interface to inputproducts that the user 101 intends to purchase.

In certain example embodiments, the latency analysis system application112 or a shopping list application may provide the user 101 with a userinterface that contains fields where the user 101 can input merchantlocation information, such as preferred merchant location of the user101, for obtaining one or more the user-identified products. Forexample, the user 101 may input ten products in to the product-inputfields of a shopping list application of a user interface. The user 101may also input a single merchant location of a merchant system 130, forexample, such as where the user 101 expects to obtain each of the tenproducts. Alternatively, the user 101 may provide multiple merchantlocations—such as different merchant locations—where the user 101expects or prefers to obtain the ten products on the shopping list. Forexample, the user 101 may identify and input merchant A has having fiveof the ten products and merchant B as having the other five products.Hence, by identifying and inputting products and/or merchant locationswhere the products may be obtained, the user 101 creates a shopping listfor the products.

In certain example embodiments, the user 101 may also input in to theuser interface an origination location, such as an address, where theuser 101 intends to begin a shopping trip. For example, a user 101 thatdesires to receive a shopping route as described herein may input a homeaddress or other address, which can serve as the origin for determiningthe shopping route as described herein. That is, the address may serveas the origination location from which the user 101 intends to departfrom when beginning the user's shopping trip. The origination location,for example, may or may not coincide with the current location of theuser 101 (and the associated user device of the user 101). For example,the user 101 and the user's associated user device 110 may be located ata particular location, but the user 101 may desire to originate anshopping route from another location. A user 101 at a work location, forexample, may desire to travel to the user's home after work and thenthereafter originate the shopping route from the user's home. The user101 may thus, in certain example embodiments, input an originationlocation for the shopping route, such as the user's home address, thatis different from the current location of the user 101 (and the userdevice 110 of the user 101).

Alternatively, the user may indicate that the shopping route shouldoriginate at the current location of the user 101. That is, theorigination location is the same as the user's current location. Forexample, the user interface of the user device 110 may include a usercontrol option that allows the user 101 to select a “current location”or “present location” for originating the shopping route. Additionallyor alternatively, the user 101 may provide an end location for theshopping trip. For example, a user 101 that desires to complete ashopping trip on the way home from the user's work location may indicatethe user's work location as an origination location and the user's homeas and end location for the shopping trip.

In certain examples embodiments, the user 101 may provide a departuretime for the shopping trip. For example, the user 101 may indicate thatthe user 101 intends to depart for the shopping trip at the currenttime, such as by selecting a “depart now” user control option on a userinterface of the user device 110. In certain examples embodiments, theuser 101 may provide a future departure time, such as “leave in 2 hours”from the “current location.” In certain example embodiments, the user101 may provide—for an origination location that is different from thecurrent location of the user 101—a future departure time fromorigination location. For example, a user 101 currently working at awork location may provide, via a user interface of the user device 110,a departure time of 6:00 p.m. from the home location of the user 101.

In certain example embodiments, the user 101 may also input into a userinterface of the user device 110 a preferred mode or modes oftransportation for the shopping route. For example, the user 101 mayindicate that the user 101 is walking and/or traveling by personaltransportation, such as by a car or bicycle of the user 101.Additionally or alternatively, the user may indicate a preference forpublic transportation, such as a public bus, ferry, and/or subway trainthat runs on predetermined routes and times. In certain exampleembodiments, the user 101 may indicate a combination of transportationoptions, such as walking, bicycling, and public transportation.

In certain example embodiments, the user 101 may indicate the maximumdistance the user 101 desires to travel from the origination location ofthe shopping route. For example, the user 101 may indicate, such as viaa user interface on the user device 110, that the user 101 desires onlyto travel within a specified radius of the origination location, such aradius of about 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, or 30kilometers. In certain example embodiments, the user 101 may provide atotal travel distance the user 101 is willing to travel. For example,the user 101 may indicate, such as via a user interface on the userdevice 110, that the user 101 desires to travel a total distance ofabout 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, or 30 kilometers toobtain all the items on the shopping list.

Following input of the products (and optionally merchant locations) into fields of a user interface associated with the user device 110 tocreate the shopping list, the user device 110 communicates the shoppinglist to the latency analysis system 140. The latency analysis system 140receives the shopping list (and optionally the locations where productson the list may be purchased). The latency analysis system 140 may alsoreceive a user-provided origination location for the user 101, such asthe location where the user 101 intends to begin (originate) theshopping route. The latency analysis system 140 may also receive thepreferred means of transportation of the user 101 from the user device110, as well as the maximum distance the user 101 will travel from theorigination location and/or the desired total travel distance.

In certain example embodiments, the user 101 may provide or select userpreferences for a shopping route that arc then associated with the useraccount 143 of the user 101. For example, the user 101 may log in to theuser account 143 and provide locations of merchants where the user 101often shops. The user 101 may also provide or select other preferenceswith the user account 143, such as the preferred transportation means ofthe user 101, such bicycle, personal vehicles such a car, or publictransportation. The user 101 may also indicate a maximum distance theuser 101 is willing to travel beyond any origination location and/or forthe total shopping trip. After receiving the preferences and selectionsof the user 101, the latency analysis system 140 associates the user'sselections and preferences with the user account 143 of the user 101 foruse in determining routes for the user 101.

In block 510, the latency analysis system 140 determines the current orexpected location of the user 101. For example, based on receiving theshopping list from the user device 110, the latency analysis system 140determines the current location of the user device 110 associated withthe user 101 (and hence determines the location of the user 101). Thelatency analysis system 140 can determine the current location of theuser device 110, for example, by any method described herein. Forexample, the latency analysis application 112 may, along with a locationservice and/or hardware of the user device 110, rely on WiFi signals andcellular communication towers to determine the location of the userdevice 110. Additionally or alternatively, the latency analysisapplication 112 may rely on satellites, Global Positioning System(“GPS”) location technology, a Network Location Provider (“NLP”), a mapapplication, or other location identifying technology of the user device110 to determine location of the user device 110. Additionally oralternatively, the latency analysis system may rely on enhanced GPSsystems and methods, such as those associated with a Differential GlobalPositioning System (“DGPS”). Additionally or alternatively, the latencyanalysis system may rely on indoor localization techniques.

In certain example embodiments, the latency analysis system 140 maydetermine the current location of the user 101 based on locationinformation received from the user 101. For example, the user 101 mayprovide an origination location that coincides with the current locationof the user 101 and the user device 110 associated with the user 101.The latency analysis system 140 then reads the received originationlocation to determine the current location of the user 101.Alternatively, the latency analysis system 140 may determine theexpected origination location of the user 101 and the user device 110associated with the user 101. For example, in embodiments where the user101 and the user device 110 associated with the user 101 are differentfrom the preferred origination location of the user 101, the latencyanalysis system 140 determines the expected location of the user 101based on reading the received preferred origination location from theuser device 110.

In block 515, the latency analysis system 140 identifies merchantlocations near the user 101 or the expected origination location of theuser 101. For example, based on the current location of the user device110, the latency analysis system 140 determines merchant point-of-saleterminals 134 of one or more merchant systems 130 that are in theproximity of the user device 110 from which the latency analysis system140 receives the shopping list of the user 101. Alternatively, such aswhen the latency analysis system 140 receives a preferred originationlocation from the user device 110 that is different from the currentlocation of the user device 110, the latency analysis system 140identifies merchant locations that are near (proximate) to the receivedorigination location. To identify merchant locations, for example, thelatency analysis system 140 may rely on received point-of-interestlocation data as described herein with reference to block 310.Additionally or alternatively, the latency analysis system 140 may relyon publically available information to identify merchant locations, suchas merchant names and addresses.

In certain example embodiments, the latency analysis system 140 mayidentify merchant locations, such as merchant point-of-sale terminals134, near the user device 110 or near a preferred origination locationby defining a radius around the user device 110 or around the preferredorigination location. For example, the latency analysis system maydetermine that merchant locations that are within the radius are nearthe user device 110 (or the preferred origination location), whereasmerchant locations outside the radius are not near the user 101 device(or the preferred origination location). The radius may be anyconfigurable length, for example, such as 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,15, 20, 25, or 30 kilometers, encompassing the current location of theuser or the expected origination location. In certain exampleembodiments, the latency analysis system 140 may determine the length ofthe radius based on a preferred mode of transportation provided the user101. For example, the radius encompassing merchant locations may beshorter if the user 101 is walking or bicycling to complete the shoppingroute, whereas the radius encompassing merchant locations near the user101 (or the origination location) may be longer for a user 101 travelingby a motor vehicle. In certain example embodiments, the latency analysissystem 140 may rely on radius information provided by the user 101 whenidentifying merchant locations.

In block 520, the latency analysis system 140 determines merchantlocations offering the one or more products on the shopping list forsale. For example, after identifying merchant locations near the currentor expected location of the user 101, the latency analysis system 140may access record for the identified merchant location to determinewhich products the merchant offers for sale. The latency analysis system140 then reads a product list record for the particular merchantlocation, for example, to identify products that match the one or moreof the products on the received shopping list of the user 101.

If the latency analysis system 140 identifies a product match, forexample, the latency analysis system 140 determines that the particularmerchant location offers the product on the shopping list for sale. Ifthe latency analysis system 140 does not identify a product match, thelatency analysis system 140 may determine that the particular merchantlocation does not offer the product on the shopping list for sale.Alternatively, if the latency analysis system 140 does not identify aproduct match, the latency analysis system 140 may attempt to identifyone or more the products on the shopping list by accessing the website136 of the merchant system 130 and reading products that are offered “instore,” for example. The latency analysis system 140 may additionally oralternatively request product information, such as for specific productson the shopping list, from the merchant system 130 for a particularmerchant location, such as a particular point-of-sale terminal for themerchant system 130. The latency analysis system 140 may then attempt todetermine product matches based on the products on the merchant website136 and/or from information received from the merchant system 130.

In block 525, the latency analysis system 140 determines latency periodsfor the identified merchant locations as described in blocks 305-335.For example, for each of the identified merchants offering one or moreof the products for sale, the latency analysis system 140 uses locationhistory received from multiple users, for example, to determine latencyintervals—and then the latency period (delay or wait-time)—at themerchant locations as described herein. In certain example embodiments,the latency analysis system 140 relies on historical latency period datato determine the latency period at each the locations, such as byaccessing a record for the merchant that includes prior latency periodinformation. For example, if a user 101 is currently departing thecurrent location of the user 101 to begin the shopping trip, the latencyanalysis system 140 determines, using historical latency period date,the expected latency period for each identified merchant location basedon the user's departure time. Additionally or alternatively, the latencyanalysis system 140 may determine a real time latency period for one ormore of the merchant locations, based on the population of users 101currently at a particular merchant location.

In certain example embodiments, when determining the latency period forthe merchant locations, the latency analysis system 140 bases thelatency period determination on when the latency analysis system 140expects the user 101 to arrive at the merchant location. That is, thelatency analysis system 140 may factor in the expected travel time todetermine when the user 101 may arrive at a particular location, andhence determine the latency period for when the user 101 should arriveat the location. For example, if a user 101 provides a departure time of1:00 p.m. from the user's current location, and the latency analysissystem 140 identifies merchants A as offering all of the products on theuser's shopping list for sale, the latency analysis system 140 maydetermine—based on the travel to merchant A—that the user 101 willarrive at merchant A at 1:15 p.m. Hence, the latency analysis system 140can determine the latency period, for the particular merchant, for auser 101 arriving at 1:15.

In certain example embodiments, such as when visiting multiple merchantlocations results in the most efficient (fastest) trip for the user 101,the latency analysis system 140 may base the latency perioddeterminations on multiple expected arrival times. For example, thelatency analysis system 140 may determine that a user 101 will arrive atmerchant A at 1:15 p.m. as noted in the above example, and—based onlatency period data for merchant A at 1:15—may determine that the user101 will spend 15 minutes at merchant location A before departingmerchant A. The latency analysis system 140 may also determine that theuser 101 will spend 20 minutes driving from merchant A to merchant B toobtain additional products. The latency analysis system 140 can thusdetermine that the user 101 will arrive at the merchant B location at1:50 p.m. (that is, 25 minutes after arriving at merchant A). Hence, thelatency analysis system 140 can determine a latency period for merchantB based on an arrival time of 1:50 p.m. for the user 101 at merchant B.To determine an expected arrival time, for example, the latency analysissystem 140 may rely on the departure location of the user 101 relativeto the destination location, the user's mode of transportation, routesthe user 101 may travel, traffic congestion patterns associated withroutes, and any other parameters that estimating an arrival time.Additionally or alternatively, the latency period determination may bebased on a user-provided departure time that the latency analysis system140 receives from the user 101. For example, at 12:00 p.m. a user 101may indicate a desire to leave for a shopping trip at 1:00 p.m. the sameday from the user's home. Hence, the latency analysis system 140determines latency periods for merchant locations based on the user 101departing at 1:00 p.m. from the user's home.

In block 530, the latency analysis system 140 determines a shoppingroute (or alternate shopping route) for obtaining one or more of theproducts on the shopping list. That is, based on the latency perioddeterminations for the identified merchant locations offering the one ormore products on the shopping list for sale, the latency analysis system140 compares the determined latency periods for the merchant locationsand determines the most efficient (shortest time-wise) route for theuser 101 to obtain the products on the shopping list. For example, basedon the latency period determinations for merchant locations A, B, and C,the latency analysis system 140 may determine that—for merchantlocations A, B, C, and D—the shortest route for the user 101 to obtainthe products on the shopping list is to visit merchant B, then merchantC, then merchant A, and then merchant D. Alternatively, if all of theproducts on the shopping list can be collectively obtained at merchantlocations A, B, and C, the latency analysis system 140 may determine ashopping route that includes only merchant locations A, B, and C (andnot D)

To determine a shopping route (or alternate shopping route), the latencyanalysis system 140 analyzes the determined latency period for themerchant locations to determine which subset or combination of merchantlocations results in the most efficient route, such as the quickestroute. That is, the latency analysis system 140 compares the latencyperiod data for each of the determined merchant locations offering theone or more products for sale to determine which subset or combinationof merchant locations that—when visited—collectively results in thequickest or shortest route for the user 101 to obtain the products onthe shopping list. For example, merchant location A and merchantlocation B may each offer the same product for sale. By comparing thelatency period information for merchant A and merchant B, the latencyanalysis system 140 can determine which merchant (A or B) has a shorterlatency period. The latency analysis system 140 can then include themerchant with the shortest latency period in the route determination forthe user 101. By similarly comparing the latency periods for multiplemerchant locations—and then relying on the shortest latency period amongthe determined merchant locations offering the products on the shoppinglist for sale—the latency analysis system 140 can determine and generatethe route, such as the most efficient or optimized route, for the user101 to obtain the products on the shopping list of the user 101.

As an example, if a user 101 identifies ten products on a shopping list,the latency analysis system 140 determines—after identifying merchantlocations that offer each of the products for sale—which subset orcombination of merchant locations the user 101 should visit to obtainthe ten products. That is, based on the latency period data for eachdetermined merchant location, the latency analysis system 140 determinesthe order the user 101 should visit each merchant location so that theamount of time the user spends in each location gathering products isminimized, and hence the overall length of the shopping trip to obtainthe ten products is minimized. For example, the latency analysis system140 may determine that three of the products on the shopping list of theuser can be obtained at merchant A, while two of the products can beobtained at merchant B and the remaining products obtained at merchantC. Based on the determined latency period data for each of merchants A,B, and, C, the latency analysis system 140 may then determine that—if auser 101 leaves the current location of the user 101 at 1:00 p.m. tobegin shopping—the user 101 will most efficiently obtain the tenproducts by first visiting merchant B, then merchant C, and then lastlymerchant A. For example, the latency analysis system may determine thatdeparting for a shopping trip at a current time of 1:00 p.m. andtraveling to merchant B, C, and then A (in this order) may save the user30 minutes when compared to departing at the same time (1:00 p.m.) andtraveling merchant A, B, and then to merchant C.

In certain examples, when determining the shopping route for the user101 to obtain the products on the shopping list of the user 101, thelatency analysis system 140 couples the latency period data for themerchant locations with travel time for the shopping trip. That is, thelatency analysis system 140 may include travel time to and fromidentified merchant locations as described herein when determining thegenerated shopping route. Hence, the generated shopping route is basedon the total time to complete the shopping trip. For example, traveltime alone may indicate a route where the user travels from merchant Ato merchant B and then to merchant C to obtain the shopping listproducts, whereas latency period data alone may indicate that the usershould travel to Merchant B, then merchant C, and then merchant A toobtain the products. Coupling latency period data with travel-time data,however, may result in a generated route, such as a faster route, wherethe user travels first to merchant A, then merchant C, then merchant B.

When coupling latency period data with travel-time data, the latencyanalysis system 140 may rely on a variety of modes of travel whendetermining travel time, including preferred modes of transportationthat the user 101 has provided. For example, the latency analysis system140 may rely on a user-provided walking time, bicycling time, or drivingtime, or combinations thereof. Additionally or alternatively, thelatency analysis system 140 may rely on public transportation whendetermining and generating the shopping route, such as public buses,trains, subway trains, and/or ferry systems. Additionally oralternatively, the latency analysis system 140 may assume that the user101 is walking or driving, for example, and hence base the latencyperiod determination on a walking time or driving time. For example, ifa user's shopping list includes a new toothbrush, a new pair of shoes,and a bicycle brake cable, the generated shopping route may includebicycling to merchant A to get the toothbrush, walking from merchant Ato merchant B to get the shoes, and then taking a bus to merchant C toget the bike cable. The shopping route may also include taking the busback to the user's end location.

In certain example embodiments, the latency analysis system 140 maydetermine and generate the shopping route based on preferences of theuser 101, such as a user-provided or user-specified originationlocation, departure time, end location, or other preferences. Forexample, at 12:00 p.m. a user 101 may indicate a preferred departuretime of 1:00 p.m. on the same day. Hence, based on latency periodinformation determined for the departure time, the latency analysissystem 140 can determine the shopping route for the user 101 based onthe user 101 departing for the user's shopping trip at 1:00 p.m. Thatis, in certain example embodiments, the latency analysis system 140determines the departure time for the user 101 based on the departuretime received from the user 101.

Additionally or alternatively, the latency analysis system may determineand generate a shopping trip for the user 101 that includes the best orsuggested departure time for the user 101. That is, in certain exampleembodiments, the latency analysis system 140 determines the best (orsuggested) departure time for the user 101. For example, the latencyanalysis system may determine that departing at 2:00 p.m., instead of1:00 p.m. on the same day—and traveling to merchant B, C, and thenA—results in a faster overall route for the user to obtain the tenproducts. In certain example embodiments, the latency analysis system140 may determine multiple departure times and routes associated witheach departure time. For example, the latency analysis system 140 maydetermine the best or fastest route for obtaining the items on theshopping list based the user 101 departing at 1:00 p.m., 2:00 p.m., or3:00 p.m. In such examples, the best or fastest route may be the same ordifferent. In certain example embodiments, the latency analysis system140 may determine that a specific day is preferred for completing theshopping trip. For example, the latency analysis system 140 maydetermine that completing the shopping trip on a Monday is morepreferred (and faster) than completing the same shopping trip on aSunday.

In certain examples, such as when the latency analysis system 140receives a preferred merchant location from the user 101, the latencyanalysis system 140 may include the user-identified location in theroute determination. That is, the latency analysis system 140 maydetermine that including one or more of the user-identified locationsresults in the generated route for the user to obtain the products on ashopping list. For example, the user 101 may identify merchant A asbeing a place where the user 101 preferred to shop. Thus, whengenerating the shopping route for the user 101, the latency analysissystem 140 may include merchant A in the determined shopping route.Alternatively, the latency analysis system 140 may determine a shoppingroute excluding merchant A is the faster shopping route, while the routeincluding the user-provided merchant A is slower. Hence, the latencyanalysis system 140 may determine two shopping routes for the user—onethat includes the merchant A and one that does not include the merchantA, for example.

In certain example embodiments, the user 101 may provide severalmerchant locations. Hence, the latency analysis system 140 may determinea shopping route that includes only the merchant locations that the user101 identifies. For example, a user 101 may identify merchant locationsA, B, and C, and the latency analysis system 140 may determine a routethat includes only A, B, and C. The latency analysis system 140 may alsodetermine additional or alternative shopping routes that include one ormore of the user-provided merchant locations. For example, the latencyanalysis system 140 may determine a shopping route that includes A, B,and D. In certain examples, the latency analysis system 140 may suggestmerchant locations that arc different than those the user 101identifies.

In certain example embodiments, the efficiency of the generated shoppingroute may be limited based on received preferences of the user 101. Thatis, the generated shopping route may be the fastest shopping route forobtaining the products on the shopping list of the user 101 only whenconsidering restrictions arising from preferences associated with theuser 101. For example, the shortest route (time-wise) for obtaining theproducts the on the shopping list of the user 101 may include visits tomerchants locations A, B, C, and D. Merchant location D, however, maylie outside the radius the user 101 is willing to travel or may resultin a total trip length the user 101 is unwilling to travel. Hence, whilevisiting merchants locations A, B, C, and D may result in the fastestroute for the user 101, the latency analysis system 140 may generate aroute that includes visits to merchant locations A, B, C, and E (not D).In other words, when the latency analysis system 140 factors userpreferences in to the shopping route determination, in certain exampleembodiments the shortest route (time-wise) for obtaining the productsmay be limited by the user 101 preferences (and hence less efficientthan routes that ignore user preferences). In such embodiments, however,the latency analysis system 140 nevertheless generates a route for theuser 101 to obtain the products. That is, if the latency analysis system140 must configure the route to include preferences of the user 101, thelatency analysis system 140 still provides the fastest route forobtaining the products in view of user preferences.

In certain example embodiments, the generated route may not include allthe products on the shopping list. For example, if no merchant near theuser 101 (or the user's origination location) offers the product forsale, the latency analysis system 140 may exclude the product whendetermining and generating the route.

Alternatively, if obtaining a particular product results in asignificantly less efficient (longer) shopping trip, the latencyanalysis system 140 may determine and generate two shopping routes—onethat includes the particular product and one that excludes theparticular product. That is, the latency analysis system 140 maydetermine multiple shopping routes that include all or a portion of theproducts on the shopping list of the user 101. In certain exampleembodiments, the latency analysis system 140 determines multiple oralternate shopping routes that, for each route, are based on the overallroute time, the wait time at each merchant, and/or any user preferences.The multiple routes, for example, may include the same or differentmerchants.

In block 535, the latency analysis system 140 provides the generatedshopping route to the user 101. That is, after determining a shoppingroute, the latency analysis system 140 communicates the generatedshopping route to the user device 110 of the user 101 via the network105. The user 101 then receives the route via the user device 110 of theuser 101. In certain example embodiments, the latency analysis system140 may communicate multiple shopping routes to the user 101 for theuser 101 to choose from. For example, the latency analysis system 140may communicate a ranked order of the most efficient (fastest) shoppingroutes to the user device 110 of the user 101, such as a list ofdifferent routes ranked from the faster route to the slower route. As anexample, if a user 101 identifies a preferred merchant location forshopping—but the fastest route does not include the user-specifiedmerchant location—the latency analysis system 140 may provide both theroute excluding the user-identified location and a route including theuser-specified location. In such embodiments, the latency analysissystem 140 may identify which route is more efficient (faster), such asincluding the total amount of shopping time for the route. In certainexample embodiments, the latency analysis system 140 provides multipleshopping routes that, for each route, include information regarding theoverall route time, the wait time at each merchant, and/or anyinformation regarding user preferences. The multiple routes, forexample, may include the same or different merchants.

In block 540, the latency analysis system 140 optionally provides anindication that the user has purchased a product. That is, as the user101 purchases products on the shopping list, the user may “check off”the purchased products. For example, the latency analysis system 140 mayprovide the user with a user interface on the user device that presentsthe list of products. As the user 101 purchases the products, the user101 may select the product, such as by a “tap,” “click,” or “swipe” ofthe product. The user interface can then provide an indication that theuser 101 purchased the product, such as placing a check mark by theproduct on the list, highlighting the product, or removing the productfrom the list. The user 101 can then determine from the user interfacethat the product has been purchased.

In certain example embodiments, the latency analysis system 140 mayautomatically “check off” products that the user 101 purchases after theuser 101 purchases the products. That is, after a user 101 leaves amerchant location on the generated shopping route, the latency analysissystem 140 may assume that the user 101 has obtained the productsassociated with the merchant location. The latency analysis system 140then provides an indication on the user interface of the user device 110that the product has been purchased, such as by placing a check mark bythe product on the list, highlighting the product, or removing theproduct from the list.

Additionally or alternatively, the latency analysis system 140 mayconfirm that the user 101 in fact purchased the product or productsassociated with the merchant, such as by reading purchase transactioninformation associated with a digital wallet of the user 101. That is,as the user 101 makes purchases with a financial account associated withthe user account 143 of the user 101, such as a digital wallet accountof the user 101, the latency analysis system 140 receives purchasetransaction information regarding the purchases. The latency analysissystem 140 then reads the information to determine the products that theuser 101 has purchased. In certain example embodiments, the latencyanalysis system 140 may also determines from the purchase transactioninformation the identity of the merchant selling the product.Additionally or alternatively, the latency analysis system 140determines the location of the merchant based the location of the userdevice 110 at the merchant location on the shopping route. After thelatency analysis system 140 confirms the purchased products at aparticular merchant location, the latency analysis system 140automatically “checks off” the products on the shopping list. Forexample, the latency analysis system 140 provides an indication on theuser interface of the user device 110 that the product has beenpurchased, such as by placing a check mark by the product on the list,highlighting the product, or removing the product from the list.

FIGS. 6A through 6D are an illustration depicting a user interface forproviding a shopping route to a user, in accordance with certain exampleembodiments.

As shown in FIG. 6A, a user 101 inputs in to a user interface 605 of auser device 110, such as a user interface the latency analysisapplication 112, a shopping list of products that the user 101 intendsto purchase. As shown, the user 101 can input multiple products in tothe user interface 605. After the user 101 inputs the products, forexample, the user 101 may select a user control option, such as an“enter” or “submit list” option, to transmit the shopping list to thelatency analysis system 140. When the user selects “submit list,” forexample, the user interface on the user device 110 transitions to a userinterface 605 where the user 101 can input additional information forthe shopping trip, such as preferences of the user 101, as shown in FIG.6B.

For example, the user 101 inputs the user's “current location” as boththe user's origination location and end location for the generatedshopping route. The user 101 also selects total time “on,” for example,thus indicating that total time—including travel time and time at eachmerchant location of the shopping trip—should be included in theshopping route. That is, the user 101 desires the shortest total time tocomplete the shopping route. The user also provides a future departuretime of 1:15 p.m. for the shopping trip. The user 101 may also enter themaximum distance the user 101 is willing to travel from the originationlocation, such as “10 km.” The user 101 may also enter the name of oneor more preferred merchant locations, such as “merchant A,” as well asthe preferred mode of transportation, such as “Walking & Bicycle.” Theuser 101 may also be provided with a “more preferences” option controlbutton. After the user 101 inputs the information in to the userinterface of the user device 110, the user device 110 communicates theinformation to the latency analysis system 140 via the network 101, forexample, and the latency analysis system 140 receives the informationfrom the user device 110.

After receiving the user-provided information from the user device 110,the latency analysis system 140 generates a shopping route for the useras described herein and provides the route to the user 101. That is,taking in to consideration the user-provided information—such as theuser shopping list and the user preferences as illustrated in FIGS. 6Aand 6B—the latency analysis system 140 determines the location of theuser 101, identifies merchant locations near the user 101 offeringproducts on the shopping list for sale, determines the latency periodsfor the merchant locations, and determines and generates a shoppingroute for the user 101 to obtain the products on the shopping list. Thelatency analysis system 140 then communicates the shopping route (ormultiple routes) to the user device 110, such as via the network 105. Incertain example embodiments, the latency analysis system 140 transmits aranked order of shopping routes to the user device 110, such as list offastest routes to slower routes.

As shown in FIG. 6C, after the user device 110 receives the ranked orderof shopping routes from the latency analysis system 140, the userinterface 605 of the user device 110 presents the shopping routes to theuser 101. For example, the latency analysis system 140, such as via thelatency analysis application 112, generates and provides six “shoppingroutes” to the user 101, of which routes three through six include“merchant A” as the user 101 requested in FIG. 6B. In the example shownin FIG. 6C, however, the first two routes—which do not include merchantA—are more efficient that routes three to six. Route three, for example,totals 47 minutes and includes “merchant A,” whereas routes one and twoexclude “merchant A” yet total 38 minutes and 42 minutes, respectively.The user interface 605 may also present trip order information. Forexample, while route 3 involves visiting merchant A and then merchant B,route 4—which at 53 minutes is slightly less fast than routethree—involves visiting merchant B and then merchant A. And as alsoshown in FIG. 6C, visiting three merchants, such as combinations ofmerchants A, B, and C, results in even less efficient routes, forexample, and includes traveling by car. In certain example embodiments,such as illustrated in FIG. 6C, the user interface 605 may also providethe user 101 with a user control button for selecting “additionalroutes.” Additionally or alternatively, the user interface 605 mayprovide the user 101 with a user control button for selecting “tips forfaster route.” When selected, such tips may inform the user 101 theselecting specific merchant locations to conduct shopping—or placingtravel distance restrictions on the route—may make the routes lessefficient (that is, less fast or slower).

As shown in FIG. 6D, if the user selects route 3, the user interface 605presents the user 101 with the selected route that, in this example,includes merchant A and merchant B and travel by bicycle. For example,the latency analysis application 112 may present a total time of 47minutes to the user 101. The route may include additional informationregarding times associated with the route. For example, based on thedetermined latency period information and the expected arrival time ateach of merchant A and B, the user interface 605 of the latency analysisapplication 112 indicates that 10 minutes will be spent at merchant Aand that 16 minutes will be spent at merchant B with the selectedshopping route. The user interface 605 also indicates, in certainexample embodiments, the travel time and specific route information. Forexample, the travel time along the bicycle route from the currentlocation of the user 101 to merchant A is 6 minutes, from merchant A tomerchant B is 5 minutes, and from merchant B back to the currentlocation of the user 101 is 10 minutes. Hence, the total time—whichincludes the latency period time for each of merchant A and merchant Band the travel time—is 47 minutes in total.

Other Example Embodiments

FIG. 7 depicts a computing machine 2000 and a module 2050 in accordancewith certain example embodiments. The computing machine 2000 maycorrespond to any of the various computers, servers, mobile devices,embedded systems, or computing systems presented herein. The module 2050may comprise one or more hardware or software elements configured tofacilitate the computing machine 2000 in performing the various methodsand processing functions presented herein. The computing machine 2000may include various internal or attached components such as a processor2010, system bus 2020, system memory 2030, storage media 2040,input/output interface 2060, and a network interface 2070 forcommunicating with a network 2080.

The computing machine 2000 may be implemented as a conventional computersystem, an embedded controller, a laptop, a server, a mobile device, asmartphone, a set-top box, a kiosk, a vehicular information system, onemore processors associated with a television, a customized machine, anyother hardware platform, or any combination or multiplicity thereof. Thecomputing machine 2000 may be a distributed system configured tofunction using multiple computing machines interconnected via a datanetwork or bus system.

The processor 2010 may be configured to execute code or instructions toperform the operations and functionality described herein, managerequest flow and address mappings, and to perform calculations andgenerate commands. The processor 2010 may be configured to monitor andcontrol the operation of the components in the computing machine 2000.The processor 2010 may be a general purpose processor, a processor core,a multiprocessor, a reconfigurable processor, a microcontroller, adigital signal processor (“DSP”), an application specific integratedcircuit (“ASIC”), a graphics processing unit (“GPU”), a fieldprogrammable gate array (“FPGA”), a programmable logic device (“PLD”), acontroller, a state machine, gated logic, discrete hardware components,any other processing unit, or any combination or multiplicity thereof.The processor 2010 may be a single processing unit, multiple processingunits, a single processing core, multiple processing cores, specialpurpose processing cores, co-processors, or any combination thereof.According to certain example embodiments, the processor 2010 along withother components of the computing machine 2000 may be a virtualizedcomputing machine executing within one or more other computing machines.

The system memory 2030 may include non-volatile memories such asread-only memory (“ROM”), programmable read-only memory (“PROM”),erasable programmable read-only memory (“EPROM”), flash memory, or anyother device capable of storing program instructions or data with orwithout applied power. The system memory 2030 may also include volatilememories such as random access memory (“RAM”), static random accessmemory (“SRAM”), dynamic random access memory (“DRAM”), and synchronousdynamic random access memory (“SDRAM”). Other types of RAM also may beused to implement the system memory 2030. The system memory 2030 may beimplemented using a single memory module or multiple memory modules.While the system memory 2030 is depicted as being part of the computingmachine 2000, one skilled in the art will recognize that the systemmemory 2030 may be separate from the computing machine 2000 withoutdeparting from the scope of the subject technology. It should also beappreciated that the system memory 2030 may include, or operate inconjunction with, a non-volatile storage device such as the storagemedia 2040.

The storage media 2040 may include a hard disk, a floppy disk, a compactdisc read only memory (“CD-ROM”), a digital versatile disc (“DVD”), aBlu-ray disc, a magnetic tape, a flash memory, other non-volatile memorydevice, a solid state drive (“SSD”), any magnetic storage device, anyoptical storage device, any electrical storage device, any semiconductorstorage device, any physical-based storage device, any other datastorage device, or any combination or multiplicity thereof. The storagemedia 2040 may store one or more operating systems, application programsand program modules such as module 2050, data, or any other information.The storage media 2040 may be part of, or connected to, the computingmachine 2000. The storage media 2040 may also be part of one or moreother computing machines that are in communication with the computingmachine 2000 such as servers, database servers, cloud storage, networkattached storage, and so forth.

The module 2050 may comprise one or more hardware or software elementsconfigured to facilitate the computing machine 2000 with performing thevarious methods and processing functions presented herein. The module2050 may include one or more sequences of instructions stored assoftware or firmware in association with the system memory 2030, thestorage media 2040, or both. The storage media 2040 may thereforerepresent examples of machine or computer readable media on whichinstructions or code may be stored for execution by the processor 2010.Machine or computer readable media may generally refer to any medium ormedia used to provide instructions to the processor 2010. Such machineor computer readable media associated with the module 2050 may comprisea computer software product. It should be appreciated that a computersoftware product comprising the module 2050 may also be associated withone or more processes or methods for delivering the module 2050 to thecomputing machine 2000 via the network 2080, any signal-bearing medium,or any other communication or delivery technology. The module 2050 mayalso comprise hardware circuits or information for configuring hardwarecircuits such as microcode or configuration information for an FPGA orother PLD.

The input/output (“I/O”) interface 2060 may be configured to couple toone or more external devices, to receive data from the one or moreexternal devices, and to send data to the one or more external devices.Such external devices along with the various internal devices may alsobe known as peripheral devices. The I/O interface 2060 may include bothelectrical and physical connections for operably coupling the variousperipheral devices to the computing machine 2000 or the processor 2010.The I/O interface 2060 may be configured to communicate data, addresses,and control signals between the peripheral devices, the computingmachine 2000, or the processor 2010. The I/O interface 2060 may beconfigured to implement any standard interface, such as small computersystem interface (“SCSI”), serial-attached SCSI (“SAS”), fiber channel,peripheral component interconnect (“PCI”), PCI express (PCIe), serialbus, parallel bus, advanced technology attached (“ATA”), serial ATA(“SATA”), universal serial bus (“USB”), Thunderbolt, FireWire, variousvideo buses, and the like. The I/O interface 2060 may be configured toimplement only one interface or bus technology. Alternatively, the I/Ointerface 2060 may be configured to implement multiple interfaces or bustechnologies. The I/O interface 2060 may be configured as part of, allof, or to operate in conjunction with, the system bus 2020. The I/Ointerface 2060 may include one or more buffers for bufferingtransmissions between one or more external devices, internal devices,the computing machine 2000, or the processor 2010.

The I/O interface 2060 may couple the computing machine 2000 to variousinput devices including mice, touch-screens, scanners, electronicdigitizers, sensors, receivers, touchpads, trackballs, cameras,microphones, keyboards, any other pointing devices, or any combinationsthereof. The I/O interface 2060 may couple the computing machine 2000 tovarious output devices including video displays, speakers, printers,projectors, tactile feedback devices, automation control, roboticcomponents, actuators, motors, fans, solenoids, valves, pumps,transmitters, signal emitters, lights, and so forth.

The computing machine 2000 may operate in a networked environment usinglogical connections through the network interface 2070 to one or moreother systems or computing machines across the network 2080. The network2080 may include wide area networks (WAN), local area networks (LAN),intranets, the Internet, wireless access networks, wired networks,mobile networks, telephone networks, optical networks, or combinationsthereof. The network 2080 may be packet switched, circuit switched, ofany topology, and may use any communication protocol. Communicationlinks within the network 2080 may involve various digital or an analogcommunication media such as fiber optic cables, free-space optics,waveguides, electrical conductors, wireless links, antennas,radio-frequency communications, and so forth.

The processor 2010 may be connected to the other elements of thecomputing machine 2000 or the various peripherals discussed hereinthrough the system bus 2020. It should be appreciated that the systembus 2020 may be within the processor 2010, outside the processor 2010,or both. According to some embodiments, any of the processor 2010, theother elements of the computing machine 2000, or the various peripheralsdiscussed herein may be integrated into a single device such as a systemon chip (“SOC”), system on package (“SOP”), or ASIC device.

In situations in which the systems discussed here collect personalinformation about users, or may make use of personal information, theusers may be provided with a opportunity or option to control whetherprograms or features collect user information (e.g., information about auser's social network, social actions or activities, profession, auser's preferences, or a user's current location), or to control whetherand/or how to receive content from the content server that may be morerelevant to the user. In addition, certain data may be treated in one ormore ways before it is stored or used, so that personally identifiableinformation is removed. For example, a user's identity may be treated sothat no personally identifiable information can be determined for theuser, or a user's geographic location may be generalized where locationinformation is obtained (such as to a city, ZIP code, or state level),so that a particular location of a user cannot be determined. Thus, theuser may have control over how information is collected about the userand used by a content server.

Embodiments may comprise a computer program that embodies the functionsdescribed and illustrated herein, wherein the computer program isimplemented in a computer system that comprises instructions stored in amachine-readable medium and a processor that executes the instructions.However, it should be apparent that there could be many different waysof implementing embodiments in computer programming, and the embodimentsshould not be construed as limited to any one set of computer programinstructions. Further, a skilled programmer would be able to write sucha computer program to implement an embodiment of the disclosedembodiments based on the appended flow charts and associated descriptionin the application text. Therefore, disclosure of a particular set ofprogram code instructions is not considered necessary for an adequateunderstanding of how to make and use embodiments. Further, those skilledin the art will appreciate that one or more aspects of embodimentsdescribed herein may be performed by hardware, software, or acombination thereof, as may be embodied in one or more computingsystems. Moreover, any reference to an act being performed by a computershould not be construed as being performed by a single computer as morethan one computer may perform the act.

The example embodiments described herein can be used with computerhardware and software that perform the methods and processing functionsdescribed previously. The systems, methods, and procedures describedherein can be embodied in a programmable computer, computer-executablesoftware, or digital circuitry. The software can be stored oncomputer-readable media. For example, computer-readable media caninclude a floppy disk, RAM, ROM, hard disk, removable media, flashmemory, memory stick, optical media, magneto-optical media, CD-ROM, etc.Digital circuitry can include integrated circuits, gate arrays, buildingblock logic, field programmable gate arrays (FPGA), etc.

The example systems, methods, and acts described in the embodimentspresented previously are illustrative, and, in alternative embodiments,certain acts can be performed in a different order, in parallel with oneanother, omitted entirely, and/or combined between different exampleembodiments, and/or certain additional acts can be performed, withoutdeparting from the scope and spirit of various embodiments. Accordingly,such alternative embodiments are included in the examples describedherein.

Although specific embodiments have been described above in detail, thedescription is merely for purposes of illustration. It should beappreciated, therefore, that many aspects described above are notintended as required or essential elements unless explicitly statedotherwise. Modifications of, and equivalent components or actscorresponding to, the disclosed aspects of the example embodiments, inaddition to those described above, can be made by a person of ordinaryskill in the art, having the benefit of the present disclosure, withoutdeparting from the spirit and scope of embodiments defined in thefollowing claims, the scope of which is to be accorded the broadestinterpretation so as to encompass such modifications and equivalentstructures.

1-20. (canceled)
 21. A computer-implemented method to determine queuewait times, comprising: by a latency analysis computing system:receiving fine-grained location data for a plurality of user computingdevices, the fine-grained location data comprising informationidentifying a plurality of locations for each of the plurality of usercomputing devices and a corresponding time at which each of theplurality of user computing devices was at each location; determining,for each user computing device, a latency interval for a point ofinterest, the latency interval comprising an amount of time that elapsesbetween a first time at which the fine-grained location data indicatesthat a particular user computing device arrives at a queue and a secondtime at which the fine-grained location data indicates that theparticular user computing device leaves the queue, the queue comprisinga particular area within an area comprising the point of interest;determining, based on the determined latency intervals, a queue waittime for the point of interest; and presenting content comprising thedetermined queue wait time.
 22. The computer-implemented method of claim21, wherein presenting the content comprises transmitting a notificationto one or more receiving computing devices.
 23. The computer-implementedmethod of claim 21, further comprising, by the latency analysiscomputing system, receiving, from a first user computing device, arequest related to the point of interest, wherein the content comprisingthe determined queue wait time is presented to the first user computingdevice.
 24. The computer-implemented method of claim 21, wherein thecontent comprising the determined queue wait time comprises aqualitative comparison of the queue wait time at the point of interestcompared to a second queue wait time at a second point of interest. 25.The computer-implemented method of claim 21, wherein the contentcomprising the determined queue wait time comprises a quantitativecomparison of the queue wait time at the point of interest compared to asecond queue wait time at a second point of interest.
 26. Thecomputer-implemented method of claim 21, wherein the content comprises atotal time determination for the point of interest comprising a drivetime and the queue wait time, the drive time comprising a time for afirst user computing device to move from a current location of the firstuser computing device to the point of interest.
 27. Thecomputer-implemented method of claim 21, further comprising: by thelatency analysis computing system: determining a population of users atthe point of interest; and adjusting a length of the queue wait timebased on the population of users.
 28. The computer-implemented method ofclaim 27, wherein adjusting the length of the queue wait time comprisesincreasing the length of the queue wait time in response to determiningthat the population of users at the point of interest is greater than aspecified amount.
 29. The computer-implemented method of claim 27,wherein adjusting the length of the queue wait time comprises decreasingthe length of the queue wait time in response to determining that thepopulation of users at the point of interest is less than a specifiedamount.
 30. The computer-implemented method of claim 21, furthercomprising: by the latency analysis computing system: determining one ormore second queue wait times for each of one or more second points ofinterest not comprising the point of interest. estimating a first traveltime for a particular user computing device to move from a currentlocation to the point of interest; estimating one or more second traveltimes for the particular user computing device to move from the currentlocation to each of the one or more second points of interest;determining a first total experience time based on the queue wait timefor the point of interest and the first travel time; and determining oneor more second total experience times based on the one or more secondqueue wait times and the corresponding one or more second travel times,wherein presenting content comprising the determined queue wait timecomprises presenting information, via the particular user computingdevice, comprising the first total experience time and the one or moresecond total experience times.
 31. The computer-implemented method ofclaim 30, wherein presenting content further comprises presenting, viathe particular user computing device, a ranking of the point of interestand the one or more second points of interest according to thedetermined first total experience time and the determined one or moresecond total experience times.